{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Simple Pendulum Equation\n",
    "Little notebook to run some checks on `pandas_alive` under development mode, and to generate examples.\n",
    "When using `conda` (either via Anaconda3 or Miniconda3) make sure to activate the right python env for this project in the Anaconda terminal before launching Jupyter; e.g. `conda activate py38-pandas_alive`, followed by `jupyter notebook`.\n",
    "\n",
    "**NOTE**: when setting up custom figures for animations in `Matplotlib` make sure you use the `Figure()` syntax and not `figure()` instance type. The animations in this notebook take twice as long to be generated when changing from '**F**igure' to '**f**igure' syntax.\n",
    "\n",
    "For example, instead of this: `fig, ax = plt.subplots()` try `fig = plt.Figure()` followed by `ax = fig.add_subplot()` \n",
    "OR  `fig = plt.Figure()` and `figs.add_gridspec(rows, columns)`.\n",
    "\n",
    "More on '**F**igure' vs '**f**igure' can be found in this [SO entry](https://stackoverflow.com/questions/28631741/prevent-matplotlib-statefulness/28633419#28633419), and this [other SO entry](https://stackoverflow.com/questions/16334588/create-a-figure-that-is-reference-counted/16337909#16337909)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### Import Libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import platform\n",
    "import sys\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "sys.path.append('../..')\n",
    "import pandas_alive\n",
    "from IPython.display import Video\n",
    "\n",
    "# allow Jupyter to embed plots\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Main package versions in this notebook:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Python</th>\n",
       "      <th>iPython</th>\n",
       "      <th>Pandas</th>\n",
       "      <th>Jupyter</th>\n",
       "      <th>NumPy</th>\n",
       "      <th>MatPlotLib</th>\n",
       "      <th>pandas_alive</th>\n",
       "      <th>Windows</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.8.5</td>\n",
       "      <td>7.18.1</td>\n",
       "      <td>1.0.3</td>\n",
       "      <td>6.1.3</td>\n",
       "      <td>1.19.2</td>\n",
       "      <td>3.2.1</td>\n",
       "      <td>0.2.3</td>\n",
       "      <td>10.0.19041</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Python iPython Pandas Jupyter   NumPy MatPlotLib pandas_alive     Windows\n",
       "0  3.8.5  7.18.1  1.0.3   6.1.3  1.19.2      3.2.1        0.2.3  10.0.19041"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# check that main tools' versions in Python (conda) env match original development:\n",
    "# see project 'requirements.txt' OR 'py38-pandas_alive.yml'\n",
    "# print versions of main tools used\n",
    "pyV = platform.python_version()\n",
    "ipyV = ! ipython --version\n",
    "pandasV = pd.__version__\n",
    "jupV = ! jupyter notebook --version\n",
    "npV = np.__version__\n",
    "import matplotlib\n",
    "pltV = matplotlib.__version__\n",
    "p_a = pandas_alive.version\n",
    "winV = platform.version()\n",
    "\n",
    "ver_info = [[pyV, ipyV[0], pandasV, jupV[0], npV, pltV, p_a, winV]]\n",
    "pkg_list = [\"Python\", \"iPython\", \"Pandas\", \"Jupyter\", \"NumPy\", \"MatPlotLib\", \"pandas_alive\", \"Windows\"]\n",
    "\n",
    "print(\"Main package versions in this notebook:\")\n",
    "version_info = pd.DataFrame(data=ver_info, columns=pkg_list)\n",
    "version_info"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['pillow', 'ffmpeg', 'ffmpeg_file', 'html']"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matplotlib.animation.writers.list()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### Set Pendulum Input Data | Solve equations | Return `Pandas` df for Plotting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# Physical constants\n",
    "g = 9.81\n",
    "L = .4\n",
    "mu = 0.2\n",
    "\n",
    "THETA_0 = np.pi*70 / 180  # init angle = 70degs\n",
    "THETA_DOT_0 = 0  # no init angVel\n",
    "DELTA_T = 0.01  # time stepping\n",
    "T = 1.5  # time period"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# Definition of ODE (ordinary differential equation)\n",
    "def get_theta_double_dot(theta, theta_dot):\n",
    "    return -mu * theta_dot - (g / L) * np.sin(theta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# Solution to the differential equation\n",
    "def pendulum(t):\n",
    "    # initialise changing values\n",
    "    theta = THETA_0\n",
    "    theta_dot = THETA_DOT_0\n",
    "    delta_t = DELTA_T\n",
    "    ang = []\n",
    "    ang_vel = []\n",
    "    ang_acc = []\n",
    "    times = []\n",
    "    for time in np.arange(0, t, delta_t):\n",
    "        theta_double_dot = get_theta_double_dot(\n",
    "            theta, theta_dot\n",
    "        )\n",
    "        theta += theta_dot * delta_t\n",
    "        theta_dot += theta_double_dot * delta_t\n",
    "        times.append(time)\n",
    "        ang.append(theta)\n",
    "        ang_vel.append(theta_dot)\n",
    "        ang_acc.append(theta_double_dot)\n",
    "    data = np.array([ang, ang_vel, ang_acc])\n",
    "    return pd.DataFrame(data=data.T, index=np.array(times),columns=[\"angle\", \"ang_vel\", \"ang_acc\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "hidden": true,
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>angle</th>\n",
       "      <th>ang_vel</th>\n",
       "      <th>ang_acc</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Time (s)</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.00</th>\n",
       "      <td>1.221730</td>\n",
       "      <td>-0.230460</td>\n",
       "      <td>-23.045962</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.01</th>\n",
       "      <td>1.219426</td>\n",
       "      <td>-0.460458</td>\n",
       "      <td>-22.999870</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.48</th>\n",
       "      <td>1.139250</td>\n",
       "      <td>-2.073416</td>\n",
       "      <td>-22.092251</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.49</th>\n",
       "      <td>1.118516</td>\n",
       "      <td>-2.292035</td>\n",
       "      <td>-21.861867</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>150 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             angle   ang_vel    ang_acc\n",
       "Time (s)                               \n",
       "0.00      1.221730 -0.230460 -23.045962\n",
       "0.01      1.219426 -0.460458 -22.999870\n",
       "...            ...       ...        ...\n",
       "1.48      1.139250 -2.073416 -22.092251\n",
       "1.49      1.118516 -2.292035 -21.861867\n",
       "\n",
       "[150 rows x 3 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# units used for ref: [\"angle [rad]\", \"ang_vel [rad/s]\", \"ang_acc [rad/s^2]\"]\n",
    "df = pendulum(T)\n",
    "df.index.names = [\"Time (s)\"]\n",
    "pd.set_option(\"display.max_rows\", 4)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dx (m)</th>\n",
       "      <th>dy (m)</th>\n",
       "      <th>ang_vel</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Time (s)</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.00</th>\n",
       "      <td>0.375877</td>\n",
       "      <td>-0.136808</td>\n",
       "      <td>0.230460</td>\n",
       "      <td>23.045962</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.01</th>\n",
       "      <td>0.375561</td>\n",
       "      <td>-0.137674</td>\n",
       "      <td>0.460458</td>\n",
       "      <td>46.045831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.48</th>\n",
       "      <td>0.363328</td>\n",
       "      <td>-0.167310</td>\n",
       "      <td>2.073416</td>\n",
       "      <td>207.341601</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.49</th>\n",
       "      <td>0.359781</td>\n",
       "      <td>-0.174807</td>\n",
       "      <td>2.292035</td>\n",
       "      <td>229.203467</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>150 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            dx (m)    dy (m)   ang_vel        size\n",
       "Time (s)                                          \n",
       "0.00      0.375877 -0.136808  0.230460   23.045962\n",
       "0.01      0.375561 -0.137674  0.460458   46.045831\n",
       "...            ...       ...       ...         ...\n",
       "1.48      0.363328 -0.167310  2.073416  207.341601\n",
       "1.49      0.359781 -0.174807  2.292035  229.203467\n",
       "\n",
       "[150 rows x 4 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# generate dataFrame for animated bubble plot\n",
    "df2 = pd.DataFrame(index=df.index)\n",
    "df2[\"dx (m)\"] = L*np.sin(df[\"angle\"])\n",
    "df2[\"dy (m)\"] = -L*np.cos(df[\"angle\"])\n",
    "df2[\"ang_vel\"] = abs(df[\"ang_vel\"])\n",
    "df2[\"size\"] = df2[\"ang_vel\"]*100  # scale angular vels to get nice size on bubble plot\n",
    "df2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### `Pandas` static Plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "hidden": true,
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAGGCAYAAAANcKzOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3wU1doH8N9szSa76b2QACGJhKY0Y6hKCyJFL02KCiIqIO+9F/FV4FIEUa+IKDaQIrwo2CKCVKMgHUJVEikhkMImm57sJtvP+8eagUBCElJmd/N8P5/9wM7szD5ndzNnnjllOMYYAyGEEEIIIYTcJ5HQARBCCCGEEEIcGyUVhBBCCCGEkAahpIIQQgghhBDSIJRUEEIIIYQQQhqEkgpCCCGEEEJIg1BSQQghhBBCCGkQSioIIYQQQgghDUJJBSGEEEIIIaRBKKkghBBCCCGENAglFYQQHsdx+PHHH4UOgxBCCIDr16+D4zicO3euQfuJiIjAgQMHGryPDz74oEH7IM6NkgricDIzMzF16lQEBwdDJpMhPDwcs2fPRkFBQb3201gH65rY0wn6okWLwHHcPR/Xr1+HWq1GQkKC0OESQpoBHUsbbtCgQRCLxTh+/LjQoTTIgQMHqtQHfn5+SEhIwPnz54UOrVZnz57FsGHD4O/vDxcXF0RERGDs2LHIz88XOrQWh5IK4lCuXbuGbt264fLly/j6669x9epVfPbZZ0hKSkJcXBwKCwuFDtEuzZkzB2q1mn+EhoZiyZIlVZaFhYUhMDAQcrlc6HAJIU2MjqUNl5GRgWPHjmHmzJlYt26d0OE0ikuXLkGtVuPnn39GUVERhgwZgpKSEqHDqpFGo8GAAQPg6+uLvXv3IjU1FevXr0dQUBDKy8uFDq/lYYQ4kCFDhrDQ0FBWXl5eZblarWaurq7sxRdf5JcBYImJiVVe5+HhwTZs2MCvv/3Rt29fxhhjzzzzDBsxYgRbtGgR8/PzYyqVir3wwgvMYDDw+wkPD2crV66ssu/OnTuzhQsX8utv33d4eDhjjLFz586xfv36MaVSyVQqFXvooYfYqVOnqi3ruHHj2NixY6ssMxqNzMfHh61fv54xxti3337LOnTowFxcXJi3tzd77LHHmFarrfVzrC7+Oz+z9PR0BoBt27aN9erVi7m4uLBu3bqxS5cusZMnT7KuXbsyNzc3NnjwYKbRaKrsZ/369SwmJobJ5XIWHR3NPv7441pjIoQ0HzqWNvxYumjRIjZu3DiWmprKVCrVXa/v27cvmzVrFnv11VeZl5cXCwgI4MtVKTU1lcXHxzO5XM4eeOABtn///mqPw2fPnuW3uXjxIktISGBubm7M39+fTZw4keXl5d0z1vDwcPbbb7/VuP63335jAFhRURG/7PDhwwwA27NnD7+PZcuWseeee44plUoWFhbGPv/88yr7mTt3LmvXrh1TKBSsdevWbP78+cxoNPLra/vejhw5wnr37s1cXFxYaGgomzVr1j2/h8TERCaRSJjJZKq1bDt37mSdOnVicrmc9ejRg124cIF/TX5+Phs3bhwLCQlhCoWCdejQgX311VdV9mOxWNjbb7/N2rZty2QyGQsLC2NLly7l12dlZbExY8YwT09P5u3tzYYPH87S09NrjMsZUUsFcRiFhYXYu3cvXn75ZSgUiirrAgMDMWHCBGzbtg2MsTrt7+TJkwCAX375BWq1Gj/88AO/LikpCampqfjtt9/w9ddfIzExEYsXL65zrKdOnQIAbNiwAWq1mn8+YcIEhIaG4tSpUzh9+jT+93//F1KptNp9TJgwAT/99BO0Wi2/bO/evdDpdHjqqaegVqsxfvx4TJkyBampqThw4ACefPLJOpe/rhYuXIj58+fjzJkzkEgkGD9+PObOnYtVq1bh0KFDSEtLw3/+8x/+9WvXrsW8efOwbNkypKam4q233sKCBQvw5ZdfNmpchJD7Q8fShh9LGWPYsGEDJk6ciJiYGERFReGbb76563Vffvkl3NzccOLECbz77rtYsmQJ9u/fDwCwWq0YOXIkXF1dceLECaxZswbz5s275+ehVqvRt29fdOnSBcnJydizZw9yc3MxZsyYe3+Q96Hyt2EymfhlK1asQLdu3XD27Fm8/PLLeOmll/DXX3/x61UqFTZu3IiUlBSsWrUKa9euxcqVK/n19/re/vjjDwwePBhPPvkkLly4gG3btuHw4cOYOXNmjTEGBgbCbDYjMTGx1t/rq6++ivfeew+nTp2Cv78/hg8fzpdNr9eja9eu2LlzJ/7880+88MILmDRpEk6cOMFv//rrr+Odd97BggULkJKSgq+++goBAQEAgPLycvTv3x9KpRK///47Dh8+DKVSiSFDhsBoNNb1I3d8QmY0hNTH8ePHq71iVun9999nAFhubi5jrPara9VdAWLMdnXN29ub6XQ6ftmnn37KlEols1gsjLHar67V9P4qlYpt3LixTuU1Go3M19eXbdq0iV82fvx4Nnr0aMYYY6dPn2YA2PXr1+u0v9vVp6Xiiy++4Nd//fXXDABLSkrily1fvpxFR0fzz8PCwu66wvPmm2+yuLi4esdJCGl8dCxt+LF03759zM/Pj79CvnLlShYfH1/lNX379mW9evWqsqx79+7stddeY4wxtnv3biaRSJharebX19ZSsWDBAjZo0KAq+8zMzGQA2KVLl2qMt74tFfn5+Wz48OFMpVLxv4Pw8HA2ceJEfhur1cr8/f3Zp59+WuN+3333Xda1a1f++b2+t0mTJrEXXnihyrJDhw4xkUjEKioqanyPN954g0kkEubt7c2GDBnC3n33XZaTk3NX2bZu3covKygoYAqFgm3btq3G/Q4dOpT9+9//ZowxVlpayuRyOVu7dm21r123bh2Ljo5mVquVX2YwGJhCoWB79+6t8T2cDbVUEKfB/r5KwXFcg/fVuXNnuLq68s/j4uKg1WqRmZnZoP3+61//wvPPP48BAwbg7bffRlpaWo2vlUqlGD16NLZs2QIA0Ol02L59OyZMmMDH+Nhjj6Fjx44YPXo01q5di6KiogbFV51OnTrx/6+8KtOxY8cqyzQaDQAgLy+PH/ypVCr5x9KlS+9ZVkKI/aBjae3H0nXr1mHs2LGQSCQAgPHjx+PEiRO4dOlSldfdfvwEgKCgIP54eenSJX4sW6UePXrc831Pnz6N3377rcrxNSYmBgAa5RgbGhoKpVIJX19fpKam4ttvv4W/v3+15eE4DoGBgXx5AOC7775Dr169EBgYCKVSiQULFiAjI4Nff6/v7fTp09i4cWOVsg0ePBhWqxXp6el46623qqyr3O+yZcuQk5ODzz77DO3bt8dnn32GmJgY/PHHH1XKFhcXx//f29sb0dHRSE1NBQBYLBYsW7YMnTp1go+PD5RKJfbt28e/R2pqKgwGAx577LFqP7fTp0/j6tWrUKlUfHze3t7Q6/Utqu6jpII4jMjISHAch5SUlGrX//XXX/Dy8oKvry8A2wGP3dEcensz7v2orGRFItF97XvRokW4ePEiHn/8cfz6669o3749EhMTa3z9hAkT8Msvv0Cj0eDHH3+Ei4sLPzuTWCzG/v37sXv3brRv3x4fffQRoqOjkZ6e3oAS3u32LgWV5b9zmdVqBQD+37Vr1+LcuXP8488//3T42VEIcRZ0LG3YsbSwsBA//vgjPvnkE0gkEkgkEoSEhMBsNmP9+vVVXntnl6zbj5eMsXonblarFU888USV4+u5c+dw5coV9OnTp177qs6hQ4dw/vx5lJSU4PLlyxg8eHCV9fcqz/HjxzFu3DgkJCRg586dOHv2LObNm1el+8+9vjer1Yrp06dXKdf58+dx5coVtG3bFi+++GKVdcHBwfx+fXx8MHr0aKxYsQKpqakIDg7Ge++9V2t5Kz//FStWYOXKlZg7dy5+/fVXnDt3DoMHD+Zjv7Ob4J2sViu6du161/dy+fJlPP3007XG4SwoqSAOw8fHBwMHDsQnn3yCioqKKutycnKwZcsWjB07lj9I+Pn5Qa1W86+5cuVKldkgZDIZANsVijudP3++ynscP34cSqUSoaGh1e67tLT0rgpIKpVWu++oqCj885//xL59+/Dkk09iw4YNNZb5kUceQVhYGLZt24YtW7Zg9OjRfNyA7YAYHx+PxYsX4+zZs5DJZPesWJtaQEAAQkJCcO3aNURGRlZ5tG7dWrC4CCG30LG0YcfSLVu2IDQ0FOfPn69yAvnBBx/gyy+/hNlsrjGO28XExCAjIwO5ubn8ssoxIzV56KGHcPHiRURERNx1jHVzc6vT+95L69at0bZtW7i7u9d72yNHjiA8PBzz5s1Dt27d0K5dO9y4ceOu19X0vVWW7c5yRUZGQiaTwdvbu8qyylaiO8lkMrRt2xY6na7K8tsvbBUVFeHy5ct8K8+hQ4cwYsQITJw4EZ07d0abNm1w5coV/vXt2rWDQqFAUlJSte/50EMP4cqVK/D3978rdg8Pj/p9kA6MkgriUFavXg2DwYDBgwfj999/R2ZmJvbs2YOBAwciJCQEy5Yt41/76KOPYvXq1Thz5gySk5Px4osvVrnK4u/vD4VCwQ90u33aPKPRiKlTpyIlJQW7d+/GwoULMXPmTIhEIn7fmzdvxqFDh/Dnn3/imWeegVgsrhJrREQEkpKSkJOTg6KiIlRUVGDmzJk4cOAAbty4gSNHjuDUqVN44IEHaiwvx3F4+umn8dlnn2H//v2YOHEiv+7EiRN46623kJycjIyMDPzwww/Iy8u75/6aw6JFi7B8+XKsWrUKly9fxh9//IENGzbg/fffFzQuQsgtdCy9/2PpunXr8I9//AMdOnSo8pgyZQqKi4vx888/1+k7GDhwINq2bYtnnnkGFy5cwJEjR/iB2jW1YMyYMQOFhYUYP348Tp48iWvXrmHfvn2YMmVKtYlXc4qMjERGRga2bt2KtLQ0fPjhh1USs9q+t9deew3Hjh3DjBkz+NaXn376CbNmzarxPXfu3ImJEydi586duHz5Mi5duoT33nsPu3btwogRI6q8dsmSJUhKSsKff/6JZ599Fr6+vhg5ciQf+/79+3H06FGkpqZi+vTpyMnJ4bd1cXHBa6+9hrlz52LTpk1IS0vD8ePH+amEJ0yYAF9fX4wYMQKHDh1Ceno6Dh48iNmzZyMrK6vRPmO7J+B4DkLuy/Xr19mzzz7LAgMDmVQqZWFhYWzWrFksPz+/yuuys7PZoEGDmJubG2vXrh3btWtXlcGFjDG2du1aFhYWxkQi0V3TIP7nP/9hPj4+TKlUsueff57p9Xp+u5KSEjZmzBjm7u7OwsLC2MaNG+8aXPjTTz+xyMhIJpFIWHh4ODMYDGzcuHEsLCyMyWQyFhwczGbOnHnPAWiM2aYPxN9TKd4+CCwlJYUNHjyY+fn5MblczqKiothHH31Up8+wPgO1bx98Wd20gxs2bGAeHh5V9rNlyxbWpUsXJpPJmJeXF+vTpw/74Ycf6hQbIaR50LHUpj7H0uTkZAaAnTx5str1TzzxBHviiScYY7aB2rNnz66yfsSIEeyZZ57hn1dOKSuTyVhMTAzbsWNHlWlcqzsOX758mY0aNYp5enoyhULBYmJi2P/8z/9UKdOd7mdK2er2Udug+ldffZX/rseOHctWrlzJ1w91+d5OnjzJBg4cyJRKJXNzc2OdOnViy5YtqzGmtLQ0Nm3aNBYVFcUUCgXz9PRk3bt3r/LbrCzbjh07WGxsLJPJZKx79+7s3Llz/GsKCgrYiBEjmFKpZP7+/mz+/Pls8uTJbMSIEfxrLBYLW7p0KQsPD2dSqZS1atWKvfXWW/x6tVrNJk+ezHx9fZlcLmdt2rRh06ZNYyUlJTXG72w4xhp5/klCHNyzzz6L4uJiu72DKyGEOAI6ltbfkSNH0KtXL1y9ehVt27ZttP1GRERg48aN6NevX6Pt01EcOHAA/fv3R1FRETw9PYUOx6lV3yGNEEIIIYQ0qcTERCiVSrRr1w5Xr17F7NmzER8f36gJBSHNhZIKQgghhBABlJWVYe7cucjMzISvry8GDBiAFStWCB0WIfeFuj8RQgghhDixDz74ACNHjkRERITQoRAnRkkFIYQQQgghpEFoSllCCCGEEEJIg1BSQQghhBBCCGkQSioIIYQQQgghDUJJBSGEEEIIIaRBaErZahQVFcFsNtdrGz8/P+Tl5TVRRM2DymAfHL0Mjh4/0PLKIJFI4OXl1cQROYf7qR+akzP8duujJZWXyuq87L28da0jKKmohtlshslkqvPrOY7jt3PUybSoDPbB0cvg6PEDVAZyb/WtH5pTS/veW1J5qazOy5nKS92fCCGEEEIIIQ1CSQUhhBBCCCGkQSipIIQQQgghhDQIjakghNgVxhi0Wq2gfUsrKipgNBoFe//GUFMZ5HI55HK5ABERQkjD2EP90BTspc7hOA5KpZIf51FflFQQQuyKVquFXC6HTCYTLAapVGq3g3HrqroyMMZQUVEBnU4HNzc3gSIjhJD7Yw/1Q1OwlzrHaDRCq9VCpVLd1/bU/YkQYlcYY05XYdgLjuPg6upq11OiEkJITah+aFoymaxBrUCUVBBCSAtzv03bhBBCSE0oqSCEEEIIIYQ0CCUVhBAikJCQEGg0GqHDIIQQ4uSOHj2KPn36NOl7UFJBCCGEEEIIaRCa/YmQBrBaGbSlVpSWWFCus8JQYYXJyGCx2NaLxIBUykHuwsHVTQQ3lRgqDzGkUurTTkhLoDdb8c0f+SjSW9AxwBUPBbvB04WqXkKI86GWCkLqqVxnRdpfehw7oMWeH0pwcG8Zzh4vx6U/9Lh+1YjsDBNysm2Pmxkm3Egz4vJFA86drMCRJNs2v+0uxYXkctzMNMJkcq75tp3VypUr0aNHD0RHR+OJJ55ASkoKAKBnz55Yu3Yt+vbti/bt22PBggX8NiaTCa+//jpiY2PRp08ffPzxxzU2PxcVFWHGjBno1KkT4uLi8M033zRLuUjT+iuvAt+nFOLXayVYdUyNZ76/iiW/ZeJoRilMFvrbJ8RZNKSOiIqKqrWOqBQfH4/jx4/zz69fv47Y2Fh+StqNGzciPj4eHTp0wOzZs1FeXt4Epa0eXS4hpA6sVoacbBPSrxhQmGepsk4iBVQeYihVYrgoOEhlHMRiW0uExcJgMjIY9AzlOiu0pRboK2ytG9pSI26kGSESAX6BEoRGyBAUSlPlVWKMAUZD07+RTF6n2ZCioqKwe/dueHh4YOXKlZg9ezb2798PANi3bx8SExOh1+sxZMgQDBs2DD179sSmTZtw5swZHDx4EBaLBZMmTapx/6+88gpiYmJw6tQpZGZmYsyYMYiNjUVsbGyjFZU0v1h/V0R6u+BqoZ5fdvqmDqdv6uAhFyMhyhNDo7zgQa0XhNSLM9URR44cgcFguGcdUWnYsGHYsWMHHn74YQDATz/9hCFDhkAqlWLHjh34v//7P2zbtg0+Pj6YM2cO/vvf/2LhwoUN+wzqiI5ihNwDszJkZZhw+U89ynVWfrmPnxiBoTL4+kug8hDVa4pOg96KogIL8nNN0OSYoSuzIvemGbk3zZC7VKDjg1L4BlohlbXwLlJGA6wzxzT524hWfwPIXWp93eOPP87/f9asWVi1ahV0Oh0AYNq0afD29gYAxMXFISUlBT179sTu3bsxffp0+Pr6AgCee+45fPrpp3ftW6PR4OTJk9i4cSPEYjEiIyMxcuRI7N69m5IKBycVc3h3cDh2XirC1xfyUWG+dRwpMViw9Y8C/JBSiMfaeGB4jDeC3enCAiF14kR1hJ+fH0wmU411xO2GDx+OiRMn4s0334RIJMKOHTswf/58AMDWrVvxyiuvIDQ0lI9j8uTJlFQQIrTiQjMuJFegpMjWMiGTcwhvK0N4WzkUrvffc1DuIkJgiAiBIVIwxlBWYkV2hhGZ6UYY9AzJx/IglgBtouRoG+NC4y/sxJYtW/DFF19ArVaD4zgwxlBUVAQA8PHx4V+nUCj4ikSj0SA4OJhfFxQUVO2+s7OzUV5ejg4dOvDLLBYLRo0a1RRFIc1MLOIw4gFv9I5wx+ZzGvx6rbTKeqOFYfeVYuy5Uox+rd0xvpMvApSUXBDiSJqyjrhdbGwsVCoVjh8/joCAAOTk5CA+Ph6ArS6ZM2cOXnvtNf71zXmnbkoqCLmD1cpw6U89rv5lAJhtoHXkA3JEtJNDImncE3yO4+DuKYa7pwLRHVygzjLjxlUzCvIMuJJiwI00Ix7o5IKw1rKWd8Mymdx2hagZ3qc2mZmZWLx4Mb7//nt06NABer0eUVFRtd551N/fH2q1mn9++/9vFxgYCHd3d1y8eLF+sROH4q2QYHZcMB6P8sb6M7m4qKmosp4B+C29FIdulGJQpCdGd/CFt4KqaUKq1YLqiDsNHz4cO3fuhJ+fH4YOHQqJxHacCAwMxBtvvIFBgwbVaT+NjY5WhNymotyK00d1KCqwtU6EtJIi9kEF5C5NP6eBSMQhNFyGbj1b4WxyBlLOV0BXZsX5UxXIvG5El+6ucFOJmzwOe8FxXJ2anJuDTqcDx3Hw8vKCyWTCihUraq0sACAhIQGff/45evfuDavVio0bN1b7uqCgIHTp0gX//e9/MXPmTEilUqSmpkIulyMqKqqRS0OEFunjgmUDWuF4lhYbz2iQo711JVHEAWYrsOtyMX5JK8ET0V54MtYHSlnL+dsnpC6cqY7o378/jEZjjXXEnYYPH44xY8bAy8sLS5cu5ZePHz8eH374IaKjoxEeHo7c3FykpKSgf//+91u0eqHZnwj5W3GhGYf2l6GowAKJFOj6iCseinNrloTidhzHIShUhn5DVGjfxQViMVCYZ8HBfWXIuGao04GKNK6YmBhMmDABAwYMwMMPP4ywsDDIZLV3T5k8eTIefPBB9O3bF0899RQSEhJq3O6jjz5CVlYW4uLi0LlzZyxcuBB6vb7a1xLHx3Ec4sJUWD2sDaY85A83qe04Y2WAi0QElUwEo4Xh+5RCvLzjGn69VgIr/e0TYpcaWkfEx8fXWkfcLioqCj4+PigqKkJcXBy/fMSIERg9ejQmTZqEqKgoPPXUU7h8+XKDylYfHKMzlLvk5eXVqw8ax3EICgqCWq122BO+ll4GjdqE5KM6WMyAykOE7r3c4KZs/iuD1ZWhXGfFuZPlKNCYAQBhrWXo2FXBzzBlTxrjd1RaWgp3d/dGjqx+pFJpk/RD3bx5M/bt24fNmzc3+r7vdK8y3PkZS6VS+Pn5NXlMzqC+9UNdlerN2PpnAXZfLoKV2Vos/Nyk0JusKDHYWk6jfRWY3j0Abb2rvzrrDMfx+mhJ5aWy2thD/dAUKo/XzVlH1KS6z7iudQS1VJAWT6M24dRhW0LhGyBB/KMqQRKKmri6iRDX1w0xHV0ADshMN+Lor1roK6y1b0wEpdVqcfDgQZjNZqSnp2PNmjUYMmSI0GERO+TuIsEL3QLw0eOt0T3EDVYG5GpNMFis8HGVQCbmcCm/Av/efR2fnsxBmcFS+04JIXbN2eoIGlNBWrS8XFtCYbUCgSFSdI1zhcgeWwBEHNq1d4Gntxinj5WjuNCCI0laPNxPmBYVUjdWqxXLly/HtWvXoFKp8OSTT2Ls2LFCh0XsWKiHHPP7heGcWof1ZzS4UWyA3myGh4sY3goRcrQm7LlSjCMZZXjuQT882saj5U3iQIiTqKwjpk2bVqWOSE5Oxvjx4+96fbdu3fD1118LEGndUFJBWqzSYguSj9gSioAQid0mFLfzC5Si9wAljh/UoVxnxZEkLeL6KaHyoMTCHrm7u2PPnj1Ch0EcUJcgN6xMiMC+q8XYfD4PJXoLSmFBiLsMFSYrCivM+PB4Do5klGFGz0D4uEqFDpkQUk+VdcSd3VW7deuGK1euCBjZ/aHuT6RF0ldYceKQFmYT4O0nRtc4N7tPKCq5qcSIf0wJd08RDHqGYwe00JZSVwhCnI1YxCEhygufPNEGj7ZxBwOQXWqEwWJFqLsMEpHt7tyzfk7Hr9dKnL6vPSHEvlFSQVocq5Uh+YgO+nIGN5UI3ePd7HLQ8724KESI61c1sSjXUWJBiDPydLHd3+KtAa3QykMGndGKrFIjXKViuMlE0BmtWHVMjaUHspCnNQgdLiGkhaKkgrQ4qef1/LSxPXu7QSZ3zD8DmVyEh/spoXIXQV/BcOJ3HYxGGrxNiLOKDXDFyqGt8cyDfpCLOZQaLDCYrVDJxRBxwKlsLcZtOIHfqNWCECIAxzybIuQ+5WSbcO2y7Upelx6OfzM5uVyEnn2VcFFw0JZakXxYB6uFTiYIcVYSEYcn2/vgo2Gt0SXQFWYrUGawQCbmIBNzKNWbsfLoTbx9KJtmiCKENCuHGKidmJiIkydPIjs7GzKZDFFRUZg4cSKCg4P51zDG8O233yIpKQlarRbt2rXD1KlTERYWJmDkxJ4Y9FacP1UOAGgTJUdQaO03mHEEClcRevZR4sivZSjIs+DiuQp07OoqdFiENJuWWEcEKGVY9GgYfkkrwfozGpSbrBBxgItUBIPJiuOZWlwpSMe/HwlGbAAdDwghTc8hWipSUlIwePBgLFu2DPPnz4fVasXSpUur3G12+/bt+PnnnzFlyhQsX74cnp6eWLp0KSoqKgSMnNgLxhj+OF0Bo4FB5SFCTKfqbx7lqNw9xXjoYTcAwPWrRmReNwocEWluR48eRZ8+fYQOQxAttY7gOA4DIz3x0bDW6Bpsu7eF3mRFZVtlQbkZ85My8NWFPFis1IJJCGlaDpFUzJs3D/369UNYWBgiIiLw8ssvIz8/H9euXQNgO2HctWsXRo0ahZ49e6JVq1aYMWMGDAYDDh8+LHD0xB6os0xQZ5nAcbZuT442MLsuAoKliIqVAwAuJJejrIS6PpCWoaXXEb6uUizoF4p/PhIMd5eqHRCsDNj2RwEWJGWgsMIsUISEkJbAIbo/3am83NaFRalUAgA0Gg2Ki4vRuXNn/jVSqRTt27fHpUuXMHDgwGr3YzKZqswLzHEcFAoF//+6qnytI9+AyJnLYDYxXDxruxrZrr0LvHzsdz73hn4P0R0UKCqwIC/HjDPHy9F7oKpZEyhn+B21FM78HTVGHdFY9XIAjX8AACAASURBVENz4TgOj7b1xKDOrbFk5wUcyyyrsv6ipgL/3JWOOb1C0CnQTaAoG1dLOt5QWUlzut/P3uGSCsYYvvzyS8TExKBVq1YAgOLiYgCAh4dHldd6eHggPz+/xn0lJibiu+++45+3bt0a77zzDvz8/O4rtsDAwPvazp44YxmOHcyBvoLB3UOK3o9GQCKx/wa6hnwPQ4ab8e3mNJQWW5B5TYy4PgGNGFndNCT+iooKSKVSMMZgMDd9lw25hKv2ACqVVk0+V6xYgS1btqC4uBjR0dF47733EBsbi65du+KFF17Apk2boNFoMHr0aLz11lsAbCem8+bNw48//ghfX1+MGzcOW7duxdGjR2uMp0ePHli1ahXi4uIAAOnp6Rg8eDAuXrwIqVSKdevWYc2aNSgpKcGAAQPwzjvvwM3NDRKJBBzHVYn7zjJUkslkCAoKqvdn5Qgaq45o7PqhOa0a2w0//aHGe79eht50a0a4Yr0F/0nKwIu92uCZnuEQOclJmzPUW3XV0staWT8AELyOuFNz1RGFhYV46aWXcP78eXAch6FDh+Ktt96CXG7rqXDo0CEsWbIEaWlp8PPzw6pVq/Dwww8jPz8f8+fPx++//w6r1YoJEyZgwYIFd+2/IfWDwyUV69atQ0ZGBpYsWXLXuju/9Nqm1Bs1ahSGDRt21/Z5eXkwm+veTMxxHAIDA5GTk+Ow0/g5axlKiy3442wpAKB9Fzny8nKFDLFWjfU9dOrmgpOHdLhwugAqTyN8/JrnT70x4jcajTCZTNCbrRi77XIjR3i3bWOj4HJHonnn3U0BoG3btti1axc8PDywcuVKzJgxA/v37wdjDLt378YPP/wAvV6PIUOGYOjQoejZsyfWrVuH5ORkHDx4EBaLBZMmTQJj7K59327YsGFITExEt27dAAA//PADhgwZwv9/06ZN2Lp1K3x8fDBnzhwsX74cCxcuhNlsrrLv6spQyWg0Qq1W888lEolDnCzXRWPVEY1VPzSnyr+/3Nxc9PDjsDIhAisO38TVwltjS6wM+OTQNZy6psE/44OhlDnuDHjOUG/VFZXVprJ+ACBoHVGdhtQRR44cgcFgqFMdYTQa8cwzz6BPnz4oLi7G5MmTsW7dOkybNg03btzAs88+i48++giPPvoocnJy+M/sxRdfRGhoKI4ePQqRSISLFy9W+z531g9A3esI+79ke5v169fj9OnTWLhwIXx8fPjlnp6eAG5djapUWlp615Wp20mlUri6uvKPyqZtwFbZ1OdxP9vY28MZy3DxXDkYAwJDpPALlAgeX3N9DwHBUoS1ts1udf6UDmaz1WHit1ePP/44fHx8IJFIMGvWLKSmpkKn0wEApk2bBm9vbwQHByMuLg4pKSkAgN27d2P69Onw9fVFQEAAnnvuuVrfZ/jw4di1axesVtsV5h07dmD48OEAgK1bt+KVV15BaGgoFAoFZs2ahZ9//vm+yuMIn3l9NWYd0Zj1g1DHj2CVDG8PCseT7b1x53XWU9lazNl9HRnFesFjFvJ440gPKqt9H6saUkf4+fnVuY7w8fHBwIEDIZfLERAQgIkTJ+LkyZMAgB9//BGDBg3CwIEDIRaLERISgtatW0OtVuPkyZNYsmQJ3NzcoFAo+AtX1bnfz90hWioYY1i/fj1OnjyJRYsWwd/fv8p6f39/eHp64sKFC2jdujUAwGw2IyUlBRMmTBAiZGIH8nJMyMsxg+OA9p2da7anumjf2QW5N03QllpxNdWA6A6O9RnIxRy2jY1qlvepiy1btuCLL76AWq0Gx3FgjKGoqAgAqpzAKhQKviLRaDRVpjWtS5NybGwsVCoVjh8/joCAAOTk5CA+Ph4AkJ2djTlz5uC1117jX3+vK1otBdURNZOKOTzzoD8eDHLDB0fVKLhtsPbNMiNe3XMD/4oPQo9QlYBRElJ/LbWO0Gq1eOONN3DkyBFotVpYLBZ06dIFAKBWqxEeHn7XNmq1Gr6+vlUujjQFh0gq1q1bh8OHD2Pu3LlQKBT81SZXV1fIZDK+T1liYiKCgoIQGBiIxMREyOVy9OrVS+DoiRAYY0g5b2vyj4iUOfxN7u6HTC5Cx4cUOH2sHFdS9QgJl0LpQJ8Dx3FwkdhHn+/MzEwsXrwY33//PTp06AC9Xo+oqKhar+D4+/tXaUa+s0m5JsOHD8fOnTvh5+eHoUOHQiKxHaoDAwPxxhtvYNCgQfdfGCdEdUTtOgW64YPHW+OTE2ocy9TyyyvMViw7mI2nO/lidAcfpxlnQZxfS60j1qxZg+LiYuzfvx/e3t7YvHkztm/fDgAIDg5GWlraXdsEBwcjPz8fFRUVTZpYOERSsW/fPgDAokWLqix/+eWX0a9fPwDAiBEjYDQa8cUXX0Cn0yEyMhLz5s1r8qyM2KebmSaUFlsgkdhmfGqpgsKk8EuXIC/HjJRzFejRWyl0SA5Jp9OB4zh4eXnBZDJhxYoVdWoSTkhIwOeff47evXvDarVi48aNdXq/4cOHY8yYMfDy8sLSpUv55ePHj8eHH36I6OhohIeHIzc3FykpKejfv//9Fs0pUB1RN+5yMV7rHYL9aSVYm5wLo+XWb/irC/m4UWzA7LggyB1gMgtC7ElD64j+/fvDaDTWqY7QarVwcXGBSqVCVlYWvvzyS76L58iRIzFo0CAkJSWhf//+UKvVMJlMiIiIQI8ePbBw4UIsXLgQIpEIKSkp6Nq1a0OLXoVDJBXffPNNra/hOA5jxozBmDFjmiEiYs8YY7h80dZK0SbaBXKXlltBchyH2AcVOLinDLk3zdCoTfAPst8pde1VTEwMJkyYgAEDBsDV1RWzZ8+GTFb7HdknT56Mq1evom/fvvD29sZTTz2FnTt31rpdVFQUfHx8UFBQwM8CBdhOjIuLizFp0iTk5OTA398fkyZNavFJBdURdcdxHAZFeiLKxwXvHMrGzbJb3eeOZJRBozNhXt9QeCkc4vSAELvQ0DoiPj6+znXE1KlT8dJLL6F9+/aIjIxEQkICjh07BgBo1aoV1qxZg6VLl+Kll16Cv78/3n//fURERGD16tWYN28eevbsCY7j8PTTTzd6UsExex/5IoC8vLx69VPmOA5BQUFQq9V2P5CoJs5UhtMnbiD5qA4SKTBgmDukMsdJKprqe7h4tgLXLhugVInQd4gKIlHTNBk3RvylpaVwd3dv5Mjq514zJzXE5s2bsW/fPmzevLnR932ne5Xhzs9YKpU6zexPTa2+9UNzqu/fX7nJgtXHc3Ako+o9LfxcJZjfLxQRXvbdyusM9VZdUVlt7KF+aAqVx+vmrCNqUt1nXNc6wnHOtgipA8YYLlW2UkTJHSqhaEpRsS6QyTloy6zITDcKHU6LodVqcfDgQZjNZqSnp2PNmjX89LCECM1VKsarvYLxQrcA3N7jKa/cjNf2ZSA5W1vzxoSQBnO2OoLaN4lTuXFNi7IS21iK1lFyocOxG1IZh3YPyHHxnB6XL+oRGi6D2E4GuDkzq9WK5cuX49q1a1CpVHjyyScxduxYJCcnY/z48Xe9vlu3bvj6668FiJS0VBzH4fFoL7T1dsHbh7JR9PfsUHqzFcsOZmF69wAMaeclcJSEOKfKOmLatGlOUUdQUkGcyvlk291xIyLlkFErRRXhkXJcu2xARTlD+lUDImPsu2uDM3B3d8eePXvuWt6tWzdcuXJFgIgIqV6MnwLvJ0Tg3UPZSM2rAGC7Ud6nJ3ORrzNjQmffOt1VmBBSd5V1xJ3dVR21jqCzLuI0igrMyLlZAU5ErRTVEYs5/l4VV1MNMJucu18uIaR+vBUSvPlYKwyN8qyy/NuLBfjwuBpmKx0zCCE1o6SCOI20v2xjKUJbyeCioJ92dULDZXBTiWAyMly/ahA6HEKInZGKOUzvHohXHg6E5LYJHX69Voo3D2Sh3GQRMDpCiD2jMy/iFMq1FtzMsjUdtomhVoqacCIO7R6wtVakXTLAbKYrj4SQuz3W1hPLBrSCh8utG2aeU+swb38GivXme2xJSNPhOA5GI0020lSMRmODujnSmAriFK6nGQEGhLRyg4enxOmn3GuIkHApLl0UoUJnRcY1I9pQVzFCSDVi/BRYMSQCyw5mIb3I1rJ5rciA1/fdwOJHW8FfSfe8Ic1LqVRCq9VCr9cLHUqjkslkdpEscRwHpfL+b5JLSQVxeBYLQ8Y12x9jhy7eAGgaxHsRiWwzQV1IrkDaX3pEtJVBJKYBmISQu/m5SfH2oHB8cPQmjmXajq03y0x4bd8NLH4sDK086KIEaT4cx0GlUgkdRqNypnuQUPcn4vDUmSaYjAwKVw6tWt9/ht2ShEbIIHfhoK9guJlpnzfyIoTYBxeJCHN7h2BMBx9+WWGFGa/uuY7L+RUCRkYIsSeUVBCHVzngOLytvMnuFO1sxGIOEe1sVxjTLhkc/uoIIaRpiTgOEzr74ZWHA/llejPDq3tv4HyOTsDICCH2gpIK4tBKiiwoKrCAEwGt2lAzfH3Yuj0BpcUWFOTRwMvarFy5Ej169EB0dDSeeOIJpKSkAAB69uyJtWvXom/fvmjfvj0WLFjAb2MymfD6668jNjYWffr0wccff4w+ffrc830KCwsxYcIEdOjQAR07dsTcuXNhMNyaqevw4cNISEhAdHQ04uPjceLECQBAQUEBZsyYgU6dOqFDhw548803m+BTIC3dY2098eZjYbi9x+R/kjJxMqtMuKAIIXaBkgri0DLTbSdbgSFSmka2nmRyEcIiZACAa5fsb3pZxhjM5qZ/1LWVJioqCrt378bFixfRp08fzJ49m1+3b98+JCYm4pdffsH27dv5E/1NmzbhzJkzOHjwIL799lts3769TuV+9tlncfr0afzyyy84f/48Nm3aBAC4ceMGnn/+efzrX/9CSkoKvvnmG/j7+wMAZs6cCVdXVxw7dgynTp3CkCFD6vuRE1InnQLdsOrx1vBS3BqWuexgNo5klAoYFSFEaDRQmzgsi4Uh64ZtPECr1jKBo3FMbaLluJFmRO5NM8q1FrgqxbVv1EwsFmD39yVN/j4JT3lAUocj4eOPP87/f9asWVi1ahV0Olu3j2nTpsHb2xsAEBcXh5SUFPTs2RO7d+/G9OnT4evrCwB47rnn8Omnn97zfXx8fDBw4EAAQEBAACZOnIjff/8d06ZNw48//ohBgwbx60NCQgAAarUaJ0+exPr166FQKAAA3bt3r3KHVkIaU5iHHB8kRGDJgUykFdouSrx76Cb++QhDv9YeAkdHCBECJRXEYeXetA3QdlFw8Augn/L9UKrE8AuUIC/HjBtpRjzQWSF0SHZry5Yt+OKLL6BWq8FxHBhjKCoqAmBLBCopFAo+2dBoNAgODubXBQUF1fo+Wq0Wb7zxBo4cOQKtVguLxYIuXboAsCUP4eHhd22jVqvh6+vLJxSENAdPhQRvDQzHu4eycfqm7Te/8qgaRgvDoEjPWrYmhDgbOhMjDqtyGtmw1jJwNED7vkVEypGXY0ZGuhFRHVwgtpPpZcViWytCc7xPbTIzM7F48WJ8//336NChA/R6PaKiomrtOuXv7w+1Ws0/v/3/NVmzZg2Ki4uxf/9+eHt7Y/PmzXy3qeDgYKSlpd21TXBwMPLz81FRUUGJBWlWLhIR5vUNxccncpB0zday+PGJHJgsDI9HewkcHSGkOVEndOKQKsqtyMuxDS6uHBdA7o9/kAQurhyMBga1HU0vy3EcJJKmf9Tl7qE6nQ4cx8HLywsmkwkrVqyo01iMhIQEfP7558jPz4dGo8HGjRtr3Uar1cLFxQUqlQpZWVn48ssv+XUjR47E3r17kZSUBKvViuzsbFy/fh2BgYHo0aMHFi5cCJ1Oh4qKCiQnJ9f6XoQ0BrGIw6yHAzE69laL3ZrkXPyYWiBgVISQ5kZJBXFI2Rm2VgpvXzHcVPYzDsARiUQcwv+eOatyel5SVUxMDCZMmIABAwbg4YcfRlhYGGSy2pPZyZMn48EHH0Tfvn3x1FNPISEhodbtpk6dipycHLRv3x7Tpk1DQkICv65Vq1ZYs2YN3nnnHcTExGDs2LHQaDQAgNWrV6O0tBQ9e/ZEjx49sHfv3oYVmpB64DgOE7v4YXr3AH7ZhjN5+P4iJRaEtBQcownq75KXl1evAY7OcDdERyvDwb1lKC22oGNXBSIibSfEjlaG6ghVBn2FFb/sKAVjQL8EFVTu95eoNUb8paWlcHd3v69tG4tUKm2SQc6bN2/Gvn37sHnz5kbf953uVYY7P2OpVAo/P78mj8kZ1Ld+aE72cgw8llGGtw9l888ndvbF6A6+jf4+9lLe5kBldV6OUN661hHUUkEcTlmJBaXFtntTBIdJhQ7HKbgoRPAPsg2xykw3ChyN89BqtTh48CDMZjPS09OxZs0amuqVOL24ViosfjSMf/5/5/Ox9UK+gBERQpoDJRXE4WTdsJ30+gdKIJPTT7ixhP09LW/WdSOsVvu8WuJorFYrli9fjvbt2+Mf//gHhgwZgrFjxyI5ORnt2rW76zF+/HihQyakUXQJcsO7g2/NVPb1H/nYfC5PwIgIIU2NZn8iDoUxhuwMW9eDkHAaoN2YAoKlkMk5GPQMGrUZgSHUCtRQ7u7u2LNnz13Lu3XrhitXrggQESHNJ9pXgVVDIzB713UAwHcXC2C0WDG1a8C9NySEOCS6zEscSnGBBRU6K8QS20kwaTwiEcfPpJWRTgO2CSENF+Hlgs+Gt+Gf//RXETac0QgYESGkqVBSQRzKzb+nPA0MlkIisY/7KTiTyi5QGrUZRoNV4GgIIc4gSCXD+lFt+ec/phbiy7OUWBDibCipIA6DMQZ1lm08RRAN0G4SKg8x3D3FYNZbCRxxPvY6wwhxXj6uUnz5VCT//IeUQhpjQYiToaSCOIziQgsqyhnEEsA/kJKKphIabvtss28IMwsUx3EwGmkGqqbAGINOp4NEQsPpSPPzdJFg822JxXcXC7DlPCUWhDgLqlmIw7i965OYuj41meBWMqSc16Mw34JyrQWuyua9uaBSqYRWq4Ver2/W972dTCZz+MSmpjLI5XLI5XIBIiIEcHeR4P/+0Q4Tv7NNVPDNnwUQccD4TnSfFEIcHSUVxCEwxqDOpK5PzUHhKoJvgAT5uWZkZZgQ1b55kwqO46BSqZr1Pe98f3u/EVFtnKEMxHmp5GJsGd0OE761JRZb/yiAiOMwtmPj3yCPENJ8qPsTcQglRdT1qTmFtBK2CxQhxLkpZbbEotJXF/KxPbVQwIgIIQ1FSQVxCDnZtq5P/oHU9ak5BIVKwYkAbakVZSUWocMhhDihOxOL9Wc02HulWMCICCENQUkFcQiVSQXdkK15SGUi+AfaekfSLFCEkKailImrzAr1yckcHEgvETAiQsj9oqSC2D2d1oKyEis4DvAPpmFAzSUo1HbPipuZ1AWKENJ0PF0kWHfbfSxWHlXjWEaZgBERQu4HJRXE7lW2Uvj4SSCT0U+2uQSGSCCiLlCEkGbg6yqtcufttw9lIzlbK2BEhJD6ojM0Yveo65MwpDIR/PguUNRaQQhpWkEqGVYNjeCfv3kgC+dzdMIFRAipF0oqiF0zGqwozLddJQ+gpKLZBYXZukCps2hcBSGk6UV4ueDdweH88/8kZeJSfoWAERFC6oqSCmLX8nLMAAPcPURwdaOfa3MLCJKA44CyEivKtdQFihDS9KJ9FVj8aBj/fO7eG7heJNzNMAkhdUNnacSu5ar/nko2iFophCCTi+DtZ+sClXPTLHA0hJCWokuQG/71SBD/fPau68gqMQgYESGkNpRUELvFGLO1VICSCiEF/j3jVuXYFkIIaQ59W3vguYf8+OczdqZDXUbjuwixV5RUELtVXGiB0cAgkQJevmKhw2mxKseyFOaZYTRYBY6GENKSjHzAB0/EePHPX/zpGvJ0dIGDEHtESQWxWxq1rZXCL0AKkYjuoi0UN6UYKg8RGLv1nRBCSHOZ+pA/Hmml4p8//2MaCivoWESIvaGkgtgtDT+egm54J7TK6XxzbtIVQkJI8+I4DnPigxHjq+CXPffDVZQZaPIIQuwJJRXELhn0VhQX2ioMGk8hvIBg23egUZtgsTCBoyGEtDRiEYelA8IQoLxVH8zckYZyI7VYEGIvKKkgdqlygLa7pxguCvqZCs3TWwy5CweLGSjQUCVOCGl+UrEIKxMiUNkbtkhvwfStZ2Gy0FgvQuwBna0Ru0Rdn+wLx3G3ukDRLFCEEIG4ycRYO7It//yv3DIsP5gFi5VaUAkRGiUVxO4wK4OGppK1O5WzQOXeNIExqsAJIcLwdZVi1dAI/nnyTR0+Oq6GlY5LhAiKkgpid4oKLTAZGaRSDl4+NJWsvfD1l0AsAfQVDCVFNECSECKcCC8XvDmgFf/8t/RSrD+joQsehAiIkgpidyq7PvkFSmgqWTsiFnPwD6QuUIQQ+9A50A1LHm/PP9/xVxG+/bNAwIgIadkoqSB2p/JeCNT1yf4E/H137cqB9IQQIqSE9oGY3OXWXbe3XMjHvqvFAkZESMtFSQWxKwaDle9a4xdIg7Ttjd/fLRXFhRYY6O7ahBA78FSsDxLaefLPPz6Rg2OZZQJGREjL5DBnbSkpKfjpp5+Qnp6OoqIizJkzBz169ODXM8bw7bffIikpCVqtFu3atcPUqVMRFhYmYNSkviqnK1V5iGgqWTvkohDB3UOE0hIr8nPNCGklEzokQqh+aOE4jsO0bgHI1ZpwRq0DALz9ezbeGtAKsQGuAkdHSMvhMGdtBoMBERERmDJlSrXrt2/fjp9//hlTpkzB8uXL4enpiaVLl6KioqKZIyUNkZ9rSyp8/R0m321x/P7ulpanpi5QxD5Q/UDEIg6v9g5GqPutCx3zkzJwvUgvYFSEtCwOk1Q8+OCDGDduHHr27HnXOsYYdu3ahVGjRqFnz55o1aoVZsyYAYPBgMOHDwsQLblflUlFZTcbYn8qu6VpcmhqWWIfqH4gAOAqFWNh/zC4Sm2nNlYG/OfXTORqjQJHRkjL4DBJxb1oNBoUFxejc+fO/DKpVIr27dvj0qVLAkZG6qNcZ4VOawXHAd5+1FJhr7x9JRCLAYOeoayExlWQqrRaLfT6qleH9Xo9dDqdIPFQ/dCy+CulWPzorW5tJXoLFv2aiRI9tawS0tSc4sytuNg204OHh0eV5R4eHsjPz69xO5PJBJPp1tSYHMdBoVDw/6+rytfWZxt7Yw9lqBxP4ekthkxW/3zXHsrQUI5QBomEg4+/BBq1GXk5Znh43TqMOEL8taEyNMzy5csxbdo0RERE8MvUajXWrVuHpUuXNns8QtcPzckZfrv1UVN5o/1cMbd3CN49lA0AuFlmwpsHsrBsYDhcJI55LbUlfbctqayAc5XXKZKKSnd+IbV1zUhMTMR3333HP2/dujXeeecd+Pn53WOrmgUGBt7XdvZEyDKknMsCALSO9EJQkP9974e+h6YXGS2DRp2LkkIRgoKC7lpv7/HXBZXh/mRnZ1dJKADbsTUzM7PZY7md0PVDc3KG3259VFfe0UFB0EKOTw5dAwBcKdDjw1P5+O/IjpCIHDOxAFrWd9uSygo4R3mdIqnw9LRNJVdcXAwvLy9+eWlp6V1Xp243atQoDBs2jH9eWenk5eXBbK57UynHcQgMDEROTo7D9jEXugyMMWRet00B6OKmh1qtrvc+hC5DY3CUMri42qb9VWfrkJl5ExLJrSstjhD/vbTEMkgkkkY7Wfbw8EB2djZCQkL4ZdnZ2XB3d2+U/deX0PVDc3KG32591Fbewa1kuNTGA0nXSgAAh9MKsGj7ObzcM9Dhrgq3pO+2JZUVcIzy1rWOcIqkwt/fH56enrhw4QJat24NADCbzUhJScGECRNq3E4qlUIqrX5A8P18sYwxu/1B1JVQZSgttsCgZxCJbd2fGhIDfQ9Nz1XJQeEmQoXOivxcEwKCq/4d2Xv8dUFluD+DBw/Gu+++i1GjRsHf3x8ajQaJiYlISEho1jgq2Uv90Jyc4bdbH/cq70s9ApGrNeJPjW2mr71Xi+HrJsGYDr7NGWKjaUnfbUsqK+Ac5XWYpEKv1yMnJ4d/rtFocP36dSiVSvj6+mLo0KFITExEUFAQAgMDkZiYCLlcjl69egkYNamr/L/HU/j4SSAWO9YVpJaI4zj4B0pwI82IvJy7kwrScg0dOhQqlQoHDx5EQUEBfH19MXr06CY9FlP9QGoiFXP43z6hmLv3Om6W2cbIbDmfD19XKR5tU3NLFSGk/hwmqUhLS8PixYv555s2bQIA9O3bFzNmzMCIESNgNBrxxRdfQKfTITIyEvPmzeMH1hH7lp9rO9j7BjjMT7LF8/s7qdDk2GdXECKc3r17o3fv3s32flQ/kHtRycVY0C8Mc/deR5nRNmPdR8fV8FJI8GCQm8DREeI8HOYMLjY2Ft98802N6zmOw5gxYzBmzJhmjIo0BquV8TM/0U3vHIevvxQcB+jKrCjXWeDqJhY6JGIHvvrqK3Tv3h3t2rXjl125cgWnT5/GuHHjmuQ9qX4gtQl2l+H1PqFYkJQBC7Pdw+Lt37OxfGArtPF2ETo8QpyC406BQJxGcaEFZjMglXHw8KITU0chlXHw8rF9Xxq6uzb526+//nrX7E/h4eFISkoSJiBC/hYb4IqZD9+arU5vtmLJb5nI05nusRUhpK4oqSCCq7yLtq+/xOFm5GjpKu98XjkmhhCO4+4abGi1WmG10o0SifAebeOBMR18+OdFegvePJCFcpNFwKgIcQ6UVBDB0XgKx1XZXa1AY3b4WStI4+jYsSM2btzI3zjOZDJh8+bN6Nixo8CREWIzvpMveoWr+Oc3ig147/BNWKx0DCOkISipIIKyWBiKCmxXiCipcDye3mKIJYDRwFBWQleiCfDss89Co9FgypQpmDlzJqZMmQKNRoOpU6cKHRohAAARx+GVh4MQ5XNrLMXpmzp8qjx8HwAAIABJREFUcTqXLo4Q0gB0FkcEVVRggdUKyF04uCkpx3U0IjEHb18J8nLMyNeY4eFFh5SWzt3dHfPnz0dhYSEKCwvh4+MDLy8vaDQaqFSq2ndASDOQS0R4vW8o5uy+joIKW/fNXZeLEayS4YkYb4GjI8Qx0VkcEVRh3q37U9B4CsdU2QWqshsbIQDg7e2NgIAAnDp1CgsWLMA///lPoUMipApvhQRv9A2F7LZ7I607rcHJrDIBoyLEcdFlRSKoyqlkfWgqWYdV2W2tIM8MK/VJbvGMRiNOnTqFQ4cO4fz587BarXjqqafw73//W+jQCLlLpI8LXnk4CO8duQkAYABWHLmJ5QPDaapZQuqJWiqIYKwWhsKCWy0VxDF5eIohkQJmE1BSRDOotFTnzp3D6tWr8fzzz+Orr75CaGgoli5dCg8PDwwePBienp5Ch0hItXpHuGN07K0ZofRmhjcPZCG/nFpfCakPOpMjgikutMBqAWRyDkp3ym8dFSfi4OMnQe5NM00t24ItX74cSqUS06dPR3x8vNDhEFIvT3f2RUaJASeytACAwgozlh7IwvKB4VBIqX4ipC7oL4UIpoDGUzgN34C/71dB4yparJdffhlt2rTB6tWrMW/ePOzatQuFhYX0t00cgojj8D+PBCHcQ84vSy8yYMWRbJpqlpA6oqSCCOb2pII4tsrB2oV5ZlgsVAG3RH379sW8efPw6aefIi4uDocOHcJLL72EkpISHDt2DAaDQegQCbknV6kY8/qFwF0u5pedytZh/RmNgFER4jgoqSCCsFoZCvNpkLazUHmIIJNzsFgATU6F0OEQAXl6emLYsGFYvnw5Vq5ciZEjR+Lnn3/G9OnThQ6NkFoFKGV4rXcIbpsQCjsvFeHnS0XCBUWIg6CkggiipMgCixmQyjioPOhn6Og4juNbK25m6gSOhtiL4OBgjBs3Dh999BHeeOMNocMhpE46BLjihe4BVZZ9cToXydlagSIixDHQ2RwRROVUst5+Yupz7SQqW5yyKakg1YiKihI6BELqbEg7LwyNujVjmZUB/z18E+lFegGjIsS+UVJBBEHjKZxP5f0qctUVsJhpXAUhxLFN7RqATgGu/HO92Yo3D2ShgKaaJaRalFSQZme1sip30ibOwU0pgouCs91/JJ+mliWEODaJiMOrvUMQqJTyywrKzVh2MBsGs1XAyAixT5RUkGZXWmyB2QxIpLYbpxHnYBtXYat8K1uiSMuxePFibN++HdevXxc6FEIajbtcjHn9QqGQ3DpdSivUY9UxNRijFllCbkdJBWl2/HgKXwk4EY2ncCaV4yoK6CZ4Lc6kSZNgsViwYcMGvPTSS1i9ejUOHz6M0tJSoUMjpEFaecjx7/hg3F5bHckowzd/FggWEyH2iPqekGbHj6egqWSdTmV3tqIC2/0qxLfNy8gYg97MYGEMcjEHiYijQfpOpE2bNmjTpg2efPJJlJeX448//sD58+exdetWqFQqdO7cGV26dEFUVBREIrqeRRxL91AlJnXxw6Zzefyyry7kI8xDhkdauTd4/4wxwGr9+2EBLBbbvxwHcCJALIZVrwczmcA4DuA4cPR3ROwMndWRZsUYQ2G+BQDg40s/P2ditjLkGA0QyThYjQyfHsj5f/bOO76t6u7/73Mleci2ZMuSd2wnsbP33qRACBAo8LSUlrJXefixW9ZTHspTKJSWXVpooQUCpU3DngHCSsgig+zlOLETL1mWJXnKWuf3x/WIM8BObEuy7/v10utKR+N+r3R1z/mc8x2U+FtwNgVo9ofwBkIc7iwggBidIDFWR1qCAVuCgbQEA9mmGApT48g2xaBooiMqMRqNTJ8+nenTpwNQXl7O5s2beeONNxg7diw//OEPw2yhhsb3I0Mh8DZBYwM0N3KBaKDUBF/VdVTdfnLlIdJjdjI44AJfC/hakC3e9vvqzQd+32FioVU4hEId4iH0/TEa5cdqFAoorTch1K1ODwYDGGIgJla9GWIgJgYMMQhDrHr/8PaYWIiLh/gEhDER4o1gTID4BHUbE6tNAml8L9qoTqNPaagP4fdJFB2YU7R4imjGFwyx3d7Elqom9tY0s6/Wiy8oOVUxM0SJx2EPUCSPn35RAi1BSUtTAGdTgF2OzkXz4vUKQy2xjEozMikrgWGp8eg0d7moJDs7m+zsbBYtWhRuUzQGKDIQgAYPeNxQ50bWqVsa6qC5EdnYAE0N0NTYum2A5iY4Im7iesXAwYk3cCApG4AWdDxUl8MfNr5Fsj8MdSxkCIIhCHbjLSfyvKJ0iIw2oRFvRCSaICkZTGZIMiNMyR2PE5K01ZQBhiYqNPqUtqxPKal6FJ02QIw26rwB1pY1sL68gS2VjbQEO3c/CTEKMUl68MBkcyJnjkvGZjRgNCjEt950AnxBiS8oaQmE8LQEcTT6qW70U93gp8TdQnGtl+ZAiO3VzWyvbuY/250kxShMyExgxqAkpmYnEqvXOisNjYGO9LUg7RVIZzWytgbqXKpYaBMOHhfUu6Gh/sR3EhMD8YlgTCDWmMBdvg3cGbJSp6grFjVxKfxh7u38NukAhrgYiIlTZ/bbVgnaVgR0OvWmKKActtW1bXXtrk7tz0sJMoSQkoy0NKoqK9QVlLabPPx+qwtVMKCujPh84FdXSuQRj9XnWw5ra0F6m1VR1dyoCqq2+22f31B/1Pd4pADp9FgokGSCJDOYkhFtYiPZAhYbIsUKFiuYLQidNsnYH9BEhUaf0iYqLFbtAhIt+IIh1pc18MWBOjZVNHC4jrDE65mclcCoNCPDUuPINscSZ7Dw+qv70XsF07MTUY6xumDQQULr/YwkGG6N7/R8MCQ55GmhyOllc1Uj31Y2Uu8LsbK0npWl9RgNCrNykzgl38SYdKPmJqWh0Q+RUkK9B2odUOtA1jrAWYOsrQanA2prKKt3d/0DFaVjFt2cog5yk0xgTGy9tbr+GBPaH2NMRBgMnT4mE7ijqpHffH6IUOv1cHcokedS53DzjIxecRMSQqC02XcCWadO1CIpJbR4O4uM5kZkU6P6uLGuVcR5kPUe9X69BxrrVcHTtiJUXnp8ASKUVqFhbRca9flDCeliIMUK1jRINGnuV1GAJio0+pS2eAqLFk8R8VTW+/hwr4vP9nto9HX4+w5JiWXmoCSmZCcyOKWzn60QAos1FoNB4PdL6lxBklO7/1vrFEF+Shz5KXEsKEgmGJLsrWnmm/IGVpbU4WgKsLzYw/JiD5lJBhYNS+G0oWaMBk2samhEE1JK8NSCvRJpL4fqCqS9EqorwFGlzqh/HzGxkJoGKakIcwqYksGkboUpGdraetAdZ1xGAldNSuOFjdXtbZ/v95CXHMP5I1N7ZB+RgBBCjbWIi4eUjuP6vuG96m5W1y4yZL27Q2C4apEuVRTidqpxJa4acNW0C42jpGK8EWyZiLRMSMuEtKyO+6ZkTXBECN3u7Xfu3InNZsNms+FyuViyZAmKonDRRRdhNpt7w0aNfkJzU4imxhAISNFERUQipWRLVRPv76llQ3lj+wXeatRzSr6J+UPM5Jpjv/MzhBBYbHrsFX6cjsAJiYoj0SmCkWlGRqYZuXSCjV3VzXxxwMOqg/VU1vt5YWM1r26p4bQhJn44wkJGUsxJ71PjxLjjjjuYPXs2c+bMwWq1htscjQhBepvV2Wp7OdgrwF6BrK6A6kp1Jvx4CKGKAosNYbFB602kWhGpaaSPHIO9oanvDuQwzhmeQnGtly8OdKRNfvlbBzmmWKZkJ4bFpkhB6PXq6kOyRX18nNfJUFAVGrWtoqJ1G9fUQHNlmbpK5XGpKyUHi5EHizve23YnNg5smZDeKjrScxDZuZA5CBEb16vHqdGZbvf2zz33HPfddx8AL774IgaDgdjYWJ599lnuvvvuHjdQo//gaq2ybDLrMBi0WYVIIiQl6w41sHRHDcW1Le3tk7MSWDQshYlZCd1yMUpN6xAVQ0f0rK2KEIxONzI63cjVk9P58oCH9/e4KKvz8cFeNx8VuTkl38SPx6SSY/puAaTR81x66aWsWrWKO+64g0GDBjFnzhxmzpxJUlJSuE3T6ANkMKiuNpSVQlkJsrwEykuhxn78NwlFdXFJz0KkZamz0OlZ6iy0xYrQG479NiHQmZIRjc1hKUQnhOC/p2Vw0OOjuFYVRiEJj62q4A8L8xj0PRMwGiAUHSSnqjeGI2gtpJqZSWWlWmBQ+n3qqlV1JbK6EhytW3uFKkZavFB2AMoOtAsNCaogtaZDVi4iO69jm5F93HNK4+Totqhwu91YrVYCgQBbt27lr3/9Kzqdjuuuu6437NPoR9S2iopUm+aiEikEQ5KvS+tYusPJIY/qZhCnF5w+NJlFw1LIMp3YjH9bvYramiBSyl5bmo43KJw1LIUzC5PZUtXE27tq+baykS8O1PFVSR2zc5P46TirJi76kHHjxjFu3DiuvfZaNm3axKpVq3jttdcYPnw4c+bMYfr06cTEaCtJ/QHZ1Ail+9TZ47JSVUBUlkHAf+w3mFPU2eP0w4RDehZY06N2kBerV7hnXja//KgET4vq3tvkD/Hgl2X88cx8TLFaf3eyCEMMZOWqouCI56TfD057q+CoUN3oKg9BxUE1tsNRBY4q5JZv1NeDGgifloXIyoWcfER+AeQVIpJOvt7IQKfboiIpKQm73U5paSlDhgwhNjYWn89HqAs5ljUGNk6HFk8RKUgp2VTRyOLNDkrc6spEgkFh0fAUzh1hOemO0JyiQ6cHv09S7wlhSu7djlUIwYTMBCZkJrC3Rs0Wtb68gZWl9aw6WM+Cocn8dJwVS7x27vUVer2enJwcsrOzKS4upqamhhUrVvDSSy9x6aWXMn/+/HCbqNENpN8Hhw4gDxRBSRGyZC9UHbNyguqOkpWLyMmH7Dx1djg7v98O2mwJBu6cm83/fnawPXC7qsHPH1eW85tTB6HXUmH3GsJggIwcyMg5WnDUuaHiILL8IFSUIstLVbHR3ASVh1TxsXFVhxtVahrkFyDyChH5BZA7FJEwsN3Yuku3e9gf/ehH3HnnnSiKwi233ALA9u3bycvL63HjNPoPfr+kzqOKCi2eIrwUOZt5+VsH2+yqH3KCQeH8URYWDUshIaZnBv+KIrBY9TiqAjgdgV4XFYczzBrPvfNz2F/r5bWtNawvb+DjfW6+PODhvJEWLhhl0QK6e5GamhpWrVrF119/TUNDA7Nnz+ZXv/oV+fn5AJSUlHD//fdroiKCkVKqMQ/Fu+DAXmTJPigrUVOVHok1HZFXoM745qjigdS0AVefYEy6kasnp/H8ho7A7a32Jv6+0c4vpmaE0bKBizAlq0HcI8a1t0kp1aDwioOqyDh4AFm6D+zl4KwGZzVy4+oOoZGWqZ7f+QWIglGq0NBrY5jj0e1v5tRTT2X27NkAxMaqLgVDhw7ltttu61nLNPoVLmcAJBgTFOKNA6uziRQq6328stnBqoNqnnG9IjhneAo/Hp1KUi8s0VtsqqiodQQYXNj37kdDLHHcOz+HHfYmXt5czZ4aL//Z7mR5sYcrJ6UxNy9JyxjSC9xxxx1MmzaNyy+/nNGjRx/1Hefn53PqqaeGyTqNYyGlhKoy5J5tsHcHcu8ONSPTkSSZIb8QMXgYIr9Qvd9PVx9OhEXD1MDtz/d3BG5/uNdNrjmWs4alhNEyjTaEEB3B/mMmt7fLpkY1ELx0HxwoUrc19o44jvUrVaEREwtDhiMKRyMKR8GQEYhYzb22jROSW3a7nXXr1uHxeLjmmmuor6/H7/eTnJzc0/Zp9BO0+hThwxsIsXS7k7d3OQmoybeYP9jExeNspCX2nh9zW1yF0xHo1biK72N0upFHzshj7aEGXvq2mqoGP4+tquDjonium5pBXrLWIfQk99xzD8OGDTuqfd++fRQUFABw2WWX9bVZGochpVRnavdsQ+7dDnt3qP7nh6M3wOBCxJDhiPxCGDxMHYhpQvy4tAduu33sq+3IaPX8BjvZphjGZSR8x7s1wokwJsCIcZ1XNRrqoLQYWVKEPLAX9u1S62/s3orcvbUjPiOvAFE4ClE4GgpHqbVEBijdFhVfffUV//rXv5g9ezYrV67kmmuuwe/38/LLL3P//ff3goka/YH2+hQ2bdmwr5BSsuZQPX/fWE1NkyrqJmQmcMVEG4NTej/NXrJFh6JAi1fS2BAiMSl8glIIwczcJCZnJ/D2zlqW7nCyvbqZWz88wKJhKfxsnLXHXL8GOr/73e94+eWXj9n+4osvhsEiDQDZ3AS7NiO3bkBu33T0SoQhBoaOQAwbgxg2BoYMUwNkNbpFjE7h7nnZ/HJZCR6v2u8FJfxhZTmPnpmvpbuOIkSiCUZPRIyeCKBWMq88hCzaAUU71RU9txP270Hu34P8+C21wOKQ4YjRkxBjJqnuUgPIFbDbI7zXX3+d++67j6ysLD7//HMAcnNzOXToUI8bp9E/CIWk6v6EFqTdV5TVtfD8ejubq9S4ibQEPddMTmdaTmKfzTTqdILkVB21jiC1jkBYRUUbMTqFn4y1Mn+wmX9sqmbNoXre2+NiZWkd10xOZ47mEnXCeDzqTHcoFKKurq5Tis/q6mr0mh9yn9Lu0rRtA3LrBti3Uy0y1kZMLBSM7BAR+YVHVY7WODFsCQbumqMGbgdb/wb1vhAPfVXOIwvziDcMnEFmf0IoSkfigflnq/+xGjuyaCcUtboNVlfAvl3IfbuQ7/xTrQQ+eiKMmYQYNVGN8+jHdPsq7/V6SU9P79QWDAbR6cI/YNCITDyuIKEgGGIEiSbtYtqbtARC/OcwVyeDIrhglIUfj04lVt/3373FqldFRU2Q3CF9vvvjkpZo4O552WyubOT5DXbK6nw8uqqCr0oS+e9pGWSG28Ao5PC04tdee22n58xmMxdeeGFfmzTgkFLSsmc7wY/eQn679ujaEOnZiLGTEWOnQOFoTUT0Im11dP62oeM3KPW08NSaSu6am6VNXvQDhBBgy0DYMmCWGicmndXIHZvU1cBdW6ChDrnuK1j3leoulVeAmDAdMWU2IiMnrPb3Bt0WFWPHjmXJkiX87Gc/a297++23GT9+fI8aptF/aKtPYbHqtAtpL7LD3sQz6yqpqFdzxE/JSuCaKelkhnG5XV2Zamk/ByKNCZkJPHl2Pm/sqGXpDjVT1Pb393PzKQoz05XjVoHVOJolS5YAqpvTr3/96zBbM3CQUqqVqr9ZgVy/kurDhYReD8PHIsZOUcVEWlb4DB2AnD0smeJaL5/t74hXWXOonqU7nPxkjFZtvj8iUtMQ886EeWciAwHYvxu5fRNyxyY4uF+t61K6T13FyM5DTJmNMnkOZPaPqaxui4qrrrqKZ555hiuuuIKWlhauvvpqCgoKuOmmm3rDPo1+QK1Wn6JXafIHeflbB8uK3ABY4vX8Ymo6MwaFv4JxSmtgfmN9iBZviNi4yFupMugUfjrOyqzcJJ5ZV8meGi+PLN/LKFs8/296BjlaVdxuoQmKvkFWV6pC4psVUNnhfixi42D8NMSUOTBqgvpYIywIIbh+WjoHPS0UOTsCt1/bUsPg5Dim5gzcgN6BgNDroc298L8uQ3pcqjvixtWwa7M6GVBeSvCd16jMG0Jo/AyYMhuROSjcpp8w3R7lJSYmcvfdd+N2u6mpqcFisWCxWHrDNo1+gJSyY6VCC9Lucb4pq+e5b+w4m9Xv+IwCM5dPTCMxQoKOY2IUkswK9Z4QtTUBMnMiN0gxNzmWhxfksazIzStbatjpaObWD0u4dIKNc4anoNMKWB2Xe+65h4cffhjgO9OLP/HEE31lUr9E+v3Ib9cgV34Cu7d2PKHXw5gpKNPmkbnwXOwud6eYFo3w0Ra4fftHHYHbEnh8dQV/XJinTVoMIIQ5BTFnAcxZgGxsQG5eh9y4CnZuJlC6H0r3w7uvqQkT5p6BmDIn6iYFujTKawvAOxwhBDabrdPzZrO5B03T6A80NoTwtUgURa2yrNEzuL0BXthgZ2WpWnMiI9HA/5ueEZEpCy1WPfUeH66aIJkR7kKqUwTnjLBwzqQh/Oa9rXxb2cg/NlWz9lA9t8zM1DK3HIfLL7+8/f6R8RQaJ490O5FffIRcsQwaWmsgCAEjxyOmnYKYOB1hVJMwKHHxgDus9mp0xmo0cNfcbP53eUfgdpM/xEMryvnjwjwt89wARCQkImafBrNPg+ZGzCV7cC3/QHWTKt6NLN6NXPICYto8xNyFiLyh4Ta5S3RJVBwegPddtPnUami00VafIjlVh06nzfSeLFJKVpTU8fzGaupbgigCzhth4WfjrGEJxO4KFque0mJfxMZVHItMczz3nzqIT/a5+fvGanY6mrnlwwNcOSmNhQXJWmzQEYwYMaL9/qhRo8JoSf9Clh9ELnsduX5lR+am5FTEnNMRcxYgUtPCa6BGlxmdZuTaKek8t74j5qW8zsfjqyr49fwcFO2aMmARxkQSTjuHulGTCblrkas/U1cjHVXIr5Yhv1qmpqadfxZixvyITvXcJVFxuFhYvnw5u3fv5sc//jFWq5WamhrefPNNhg8f3mtGakQv7fUptHiKk8bjDfDsN3bWHFJXJ/KTY7lxRgaFqfFhtuy7aSt46HYFCQYkOn10dJ5CCM4oSGZ8hpGn1lSyo7qZZ7+xs+5QAzfOyCDVqGXOORbPPPMMCxYs6NQn7Nmzh88++4wbbrghjJZFD/LgfkIfLIFNazoaC0ahnH4uTJiB0LItRiVnFiazr9bL8uIO748NFY28tqWGSybYwmiZRqQgzCmIs36MXPhfsGcbcuUnyG/XqNW+Fz+DfPtVxKnnqAIjIfxxk0fS7ZHe0qVLeeaZZzC0pqLLyMjgmmuu4cYbb+S0007rcQM1opuOStqaqDgZ1pXV8+d1VXi8QXQCfjLGyo/HpKKPAj//+ASFuHiBt1nirg2SmhZd50J6YgwPnp7Le7tdvLLZwabKRm764ADXTUnnlHyTtmpxBJs2bTpKPBQUFPCHP/whTBZFD7LGjnz7VTUFJaguThNnopz1I0R+YVht0zh5hBBcPzWdg+4W9h4WuL10h5PBllhm55rCaJ1GJCEURXVvHDkeWV+nrl58/h7U1qjXiGVvIE7/IeL08xAJkRPw3+3eXVEUDh06xJAhHUnny8vLtToVGkfR4g3R2BACOmarNbpHoy/ICxur+bw1JeEgcwy3zsyiIDV6greEEKRY9VQe8lNbE4g6UQGgCMF5Iy1MykrgqTWVFDm9PLG6knVlDdwwLYOkWO38biMmJoampiYSEzs6uubmZq2P+A6krwX54VLkx29CQJ2IEdPmIRb9BJGVG2brNHoSQ1vF7Y9KcHk7ihE+tbqS7KQY8lOi59qu0TeIJBNi4QXI085FbvhavU6UlSDfX4L87H3EWT9SBUYEuEV1u3e/8MILeeCBB5gxYwapqak4nU7Wrl3LpZde2hv2aUQxbT70JrOCISYy/f0jma1VjTy9phJHUwABnD/SwsXjrcToou+7tBwmKqKZQeZYHjkjjzd2OPn3thpWH6xnj6OZW2dlRmSQfDiYMmUKf/7zn7nqqquw2Ww4HA5efPFFpk6dGm7TIhK5eyuhxc+Ao0ptGDke5UdXRE1gpkb3SW0N3L73s4ME1Hk3WoKSh1aU8+iZ+Zi0SQqNYyD0esSM+chp8+DbtYTe+5ealvbNxcivlqH85CqYODOsq+fdFhWnnnoqhYWFrFu3DpfLRWpqKr/97W8ZNCh68+pq9A7t9Sm0VLLdwusP8rf1Vby/xwWomZ1umZnJqDRjmC07cdpWqlw1QaSUUe0ypFMEPxlrZVJWIo+vrqC8zsd9nx3i/JEWfj7eiiEKRV9Pcumll/Liiy9y6623EgwG0ev1zJs3T5t4OgIZ8CPfehX56dsgJSSnovz0WpgU3kGBRt8wMs3INZM7B27bG/w8+nU5v/nBIC2FtcZxEYoCk2ehTJyBXPcV8s3F4Kwm9OzvYcIMlIt/gUhJDYttJzTaGzRokCYiNL6XtlnpFC2eossU13p56sP1lNQ2AWpg3xUT04g3RPdA1ZSsQ6cHv19S7wlhSo7+mbiC1DgePyuff2ys5uN9bt7aVcuWqkZun53FoAGcez42Npbrr7+eX/ziF9TV1WEyaXEnRyLr3OoAYN9OADUn/U+uQsRF78SBRvc5szCZ/S4vn+zrCNzeUtXEy99Wc9Xk9DBaphENCEVBzPwBctJM5EevI5e9CZvXEtqzDeXymxCTZ/W5Td0e7T300EPH7SDuueeekzZIo38QCEg8Li3zU1cJSck7u2p5dYuDQEitin3TjAwmZUVOANbJoCiClFQ9NfYAtTWBfiEqAOL0CjdMz2ByVgJ/WlfFflcLt39UwlWT0jizcOCmnnU4HKxduxaXy0VKSgrTp08nLU1LfwogHVWEHrsXnNUQb0S58lbExBnhNksjDAghuG5KOqVuH3tqmtvb39ntYnBKHD8YotX+0vh+RGwc4vxLkFPnEnr5T3BgL6Hnfq9mifrJ1X2aLa7bo71ZszorH7fbzRdffMGcOXN6zKhoI/CbGymrqUIqOlB0oDtsq9OBTg8GA8TGQWy8WiGx7RantmFMgIQkRGISJJggMQkSkiA2LioHJm5nACkhLl5gTIjuWfbextnk58k1lWytUlcn5hdYuWZCSr8L/rVYde2iIr8g+mbyZYtXLTzW2ABNDdDYgGxS709tbOBJr48/hYazGRvPrbezYeUGbnB8RbLXA74W9RYKgQy1buURjwGdol4v2q4bbVtF1+kaQlxc63UkvuM6EhcPxkSEMRHGhS9+YePGjTz99NNMmjQJm83GgQMHeOONN7jxxhuZMmVK2OyKBGSNndCj/wO1NWDLQLnpfxGZ2qr/QMagU7hrbtZRgdt/XldFjjkm4lOGa0QOIjsP5c7fI9/5J3LZG8jP30dWV6L84o4+WwXttqiYP3/+UW1HQsY8AAAgAElEQVQzZ87k6aef5sILL+wJm6IPnw/Z0tLll8vuPKfXqyLDnAxmC8KcAskWMKcgki1gbr0lpyCUyBmEtten0OIpvpM1h+r589pK6n0hYnWCa6akc/nckVRVVSHld50p0Ye6YtWCqyb4va/tS2RLC9Q6wGlHupyIOjeugI9gZTnS44I6F3jc0NL8nZ+TAtyL4MPsWSweuogNcYO4Pf08btz9HybVlnbNmCCAr2t2f0e77rm3ura/XuC1117jzjvvZPTo0e1tO3fu5IUXXhjQokJ6mwk986AqKDJyUH75oHoN1xjwpBoN3DUvm3uXdwRu+0OSh1eU8/iZ+STHa/2oRtcQej3iR5cjhw4n9PyjsH0joad+i3Lr/epEVC/TI2eqyWSivLy8Jz4qKtHd9XvSLClUV1YigwEIBtTqp+23APj90NKsDmBamqHF23HzNiObGqGxvnUmtB4a6iHgV9MLemrVG/s7DSQ6DSp0erBYwZqOsKZDahqkpiGsaWBNB1OKGtzTR7TFU2iuT8fGGwjx9432dl/aoZY4bp+dySBzdK5MdYWUVD0IaGoM4W0OERffN+ej9DarmXWcdqTTAc7q9i21Dqj3dH490HC8D9Pr1RVEY6K6umhMVHOEG9WbLi6ec2NiGYuTJ2pSOUgSD467mkXpksuGGog16EFR1Jto2wp1i4DQYdeMI7d+P7R41RWTtmuIt/W+t7n1OtIAfj9CH77/XW1t7VHFUIcNG4bL5QqTRZGBXPIClJeCOQXl9gc0QaHRiZE2I9dNyeAv31S1tzmbAjyyspzfnpZLTJQUDdWIDMSEGSi/eojQE7+BfTsJPfcIyk339vrkc7d7nnfeeafT45aWFjZu3Mi4ceN6zKhoQyRb0KdnIkJCdWn4rtd28TOllKq7REOr0KhzId2t4sLTdt/V/phgQB04OaqOLTz0elVcpGcj0rMhPQuRkQ0Z2ZDUs77fMiRxtYuKyFk9iRSKnM08vqqSinofArhglIWLx9kw6Pp3p6E3CExmHXXuILU1AbIG9VxObRnwQ40d7BVIe3nrtgLs5eCu/f4PiItXhbjFhjCnkJiVQ6POAKZkMKWAOUVdLYyN79J/ZQjwaCDE4s0O3t/j4gO7YJtX4ZezM046D32knyWFhYUsXbqUCy+8EL1eTyAQ4PXXX6egoCDcpoUNWbwb+fWnACjX3RG2zCwakc3CwmSKa718vM/d3rbT0cw/Ntm5flpmGC3TiEbE4GEot/yG0OP/C9s3Ij9Yijj3p726z26LiiNXJGJjYznjjDOYN29ejxl1Mnz88ce8++67uN1ucnJyuOKKKxg5cmS4zeo2QoiOuItUm9p2nNfKUBBctepMbE21OrhyViOdrfdra9QVj6pyqCpvFxrtgiM+gVB6Fs7BBYRMFsjMgaw8SMs8oQCfOk+IQEDVMSazJiraCIYkb++q5Z9bHAQlpMbrB1x9g1Rbq6hwnJiokL4WqCxDlpdCRSmy4hBUlamrDqHQ8d+YmASp6gqeSLV1bC3qih7GhHaxIIQgOTOT5srKk3JBi9UrXDslncmtBfMOenz8alkpl0+0sWh4Cko/XZG67rrreOqpp7jqqqswm814PB5yc3O59dZbw21a2PqH0CeqO5qYdRpi2Jhe359G9HLtlHRK3S3sPixw+8O9boZa4rksUxMWGt1DDB2B+Pl/I198EvnBEuTUOYiMnF7bX7dFxcUXX0xycvJR7W63+5jtfcnq1at56aWXuOaaaxg+fDjLly/noYce4oknnsBqtYbVtt5EKDpVeKTaEMOOfl4GAuB2QnVlxyxuVRnYK9TBWHMjlBTRVFLU+Y16PWTkqBVds3IR2XmQlau6WH2HK9XhqWSFlmsbAEejGoy93a4GY8/KTRqQlZhTrHoOFPnaY26OhwwE1PO04qAqHspLofwgOCqPvxoYGw/pme0rcaRnqffTslQXpTAxKSuRpxcN5k9rq1hf3sALG6vZWNHIzTMzsfRDX2mr1coDDzxATU1Ne/anSLj+hqt/kN4m2LwOAHHG+b22H43+gUEnuKu14nZtc0ex0Ge/qWLS0CxStS5Vo5sos04luHEVbF2PfPufiOvv6rV9dbtHu+WWW3j55ZePar/tttt48cUXe8SoE+X999/n1FNP5bTTTgPgiiuuYMuWLXzyySdcfPHFYbUtnIg21ydrOmLUhE7PSb8PqivBXkFSUx11RbvU2d/KQ6rPdlkJsqxEfW3bm2JiIXOQKjay81q3uZBiRQihxVMcwarSOv7yTRUNvhBxesG1U9I5bYi538ZOfBdt50SdO0jAL9HppLqaVlGKLD+oVgetOKiuqgWPU307MQmy8zvEbuYgVUSYUyL2OzXH6fn1KdksK3Lzj03VfFvZyC0fHOCmGRlMy0kKt3knjcfjOarNYDC0p5Fte95sDl+KzLD1D6XF6iqaxaZOzGhofA+WeD13z8vmfz49SCCk9ryBkOTOd7bx6MI8kuMG1mSUxsmjnH8Joa3rkZvXIRvqEImmXtlPt0d9x3IHcLvdKH0YBHwsAoEA+/fv5/zzO88EjRs3jj179hzzPX6/H7/f3/5YCEF8fHz7/a5yuNtEtCFiYiEnHzFoMKaMDJpasw7JUEh1oaroGOjJ8oOq2PC1QOk+ZOk+4HA3KiNk5VGbfzOIBFKaSqE+A2HqmxWsSPsdmvxBnt9g57NidUBVmBrHL+dkk5V0fLefSDuG7nI8+6WU4HISV1FKvJJFcygO55+ewVq8Qj2fjkVcvCpa24Vr69bUu/Ufeus3EEJw9nALYzMSePTrcg64WvjdV+WcNSyZqyalE6vvuWtoX59H1113XZdet2TJkl625NiEs3+Qda2Cy5re679HtF8/ukt/Pt4RNiPXT03nmXUdgduOBh+/X1HGg6fn9esYvP78ux6LvjhekTuEUFYuVByEop2ISTN7ZT9dFhU///nPEULg9/u55JJLOj0XDAY577zzety47lBXV0coFDpqJsxsNuN2u4/5nrfeeovXX3+9/fHgwYN55JFHsNls3dr3QVcTe+z1DM/I6L7hEUbG4ceQnQ3jJnZ6XgYDBKrK8Zfux19ajP9gMf7SYgJlpdDcRHNZNd7BCYhQENMLvyYY8qGYUzDkDT3qpvSSS0pGBPwO2ys8/O/HOylzNyOAK2fkce2sweh1XRs4RsIxnChBdy3J9jL8pftazxH1XJGNak6llNHX05w5C5c3AauvBQwxGHIHH3F+FKCz9f4g7Lvord8gMxNeLcjlLyuL+eeGQ3y0181up48HFo1meHrPrlr01XkULrHQVcLZPzSlWnACMQLS+8gnPpqvHydCfz3eyzMzqfTqeGNLRyzrLkczr+2q5+4Fw7/jnf2D/vq7Ho/ePt5Kg54AkNTowdRL16Iui4onn3wSKSW/+93vuPfee9vbhRAkJSURGxsZxayONQg53sDkggsu4JxzzjnqdQ6Hg0DgOK4XRxAISe76uIQSVwuXTLBx3ggLuiiMIxBCkJGR0bX6CEoMDB6h3lrRBfxgr8C9xwPVYAo50VtTwVFFyOOiZesGWrZu6Pw5FisiK699Blpk50FmzgnnUu7WMfQSwZDk9R1O/rXVQUiC1ajn9tnZjEk34qi2f+/7I+EYuopsbGgNlm5dxao4qMY+1B/tCgOoaVPTs7GYg1QArrFnoLv6TEjLQCo6fBxWoSEooarq2J/Ty/TVb3DRiESGm3N5cnUFB5xNXPHqei6dkMZ5Iy0nHcTd3WPQ6/XdHix/Hw6HA5fLxbBhxwj0ChN93T8AyDh18sRXso+KgwcRBkN3TO4W0XT96AkGwvFePCqJnRXx7HJ0BG6/sbmczNggZxSmhNGy3mMg/K6H01fHGyjdD0DdN1/TOPfMbr23q31El0VF24c99dRT3TKkrzCZTCiKctSsk8fjOa4fr8FgwHCcC3xXf9iWQBCrUc8+p5eXNlWzobyBW2dmYkvovY6jN5FSnthJrdNDVi6uyiao9mEZNQjdz/+q1uWoOtQeaCsrWgNuXTVQW4OsrVFTnbV9jhBgy4CsPER2rhq7kdEabBvftYqQJ3wMJ0l1g58nVlews/XiPycvif+elkFijK7b9oTrGI6yIxRSg/yryjuC/CvL1CVUt/PYbxICrBmQNag9uF9k50J6DsJgINUdhI/rcfkSCdnMKEJExLEeSV/8BuMzjDx1dj7PrKtiXVkDL26qZlNFA7fMzCTVePLXkHCcR3a7nSeffBKHw4HP52Px4sWsXbuWDRs2cOONN/apLW2Eq38AkBnZasFSdy2hb9eiTJ3TdcNPkEi5fvQV/fl49QrcNTebXy4rwdnUIWafW28nNzmW4db+W3G7P/+ux6I3j1c2NXY8GDm+1/bTJVHx6KOP8qtf/QqAhx9++Livu+eee3rGqhNAr9czZMgQtm7dyrRp09rbt27dytSpU3ttv0aDjnvm5fBNDTy6fA/b7U3c8uEBrp+awbz83gmEiWRqj6hPIWJjIa8Akdc5R71samid2T4sOLe8RK3LUV2pZqravFZ9bdubzCkdGX3SsxDpWZCWBbbMXp396worSup47psqGv0h4vUKv5iazvzBpqjwCZVSqrVQauwdtR2qypFV5VBdcfyYB1ALLmbltq445aJk55ExcSp2l/u4F60kk4LeoNZ2rPcEMacM7IB+U5yee+Zl82mxhxc22NlS1cQtHxzgxhmZzBgUfUHczz33HKeccgpnnnkmV155JQDjx48/ZoKPviJc/QOo2fnE7NORH/wH+d6/kJNmnlCqbo2BS0q8nrvn5fA/n5biD3YEbj+8opzHz8rvl1nkNHoWue7L9vtiXO9d87p0Js6YMaP9/syZvRPc0ROcc845/OlPf2LIkCEMGzaM5cuXU1NTw4IFC3p1v0IIzh+XyaBYP4+tKqfI6eWxVRVsLG/guqnpJMQMjA7E75PUudVaAd+X+UkYE6FgFKJgVHublBLq3a0rGq1io7JMHeTWe1qL/bmQe3eor2//MAVSLJCahjMnj6AxSc20Yk1rrUNgQxh6rtDa4TT6gvxtvZ0vS+oAGG6N4/ZZWWR8RzB2XyOlhKbG1voldmSNHWqq1a2zWr21eI//ATqduvKQcVjhxLbMS8bONTaEEChx8cCx/dQBhCJISdXjqApQ69BEBajf2xkFyYxKi+fxVRUU17bw8IpyFhYkc9XkNOJ6MIi7tykpKeG+++7r1BYXF4fX+x3nWB8Qrv4B1FSy8quPoPIQ8t3XEBdc2uv71OhfDLfGc/eC4TywbHd7m6s5wCMrynnw9Nx+HbitcXLIUAj52l87GrJye21fXerN58zpWK6dP39+b9ly0syaNYv6+nreeOMNXC4XgwYN4p577ulxX+HjkWWK4fdn5LFkWw2v73DyZUkdOx1N3Dori9FpXXPdiWZcTnWVwpioEBff/UGQEEKtXmxKQYwc3+k52dQI1YdVST68YrK3WS3wV1tDU9HOjvcc/gGmZLXImdmCMHdUST78PqbkbomPXdVNPL66kupGP4qAC8ekctEYa5/F1MhAAJrq1dWd+jqk29lRYd1dq1Zdb6u83tL8/R9othxW5yFbdTtLz1az1uh7duBvsbWKipoAg4dFRjxWJJBjiuWRM/J5bauDt3bW8vE+N9vsTfxydhYFqSdXibuvSE9Pp6ioqFMsxd69e8nKygqjVeHtH4QxEXHx9ci//RH54VJCOfkoU+f2+n41+hc/HJvFxv12Ptzram/bXdPM8xvs3DB9YAU1a3QdubSj3IP4ydW96kHRpZHCO++806UPC3cGKICFCxeycOHCsO1frwh+Pt7GpKwEnlhdib3Bz73LD/Jfo1L52Tgr+igM4u4qR7o+9STCmAD5hYj8wk7tUkqoc7dWDneQ5GumrqQY6XS0t9HiVV9Tp86eHy42jnLQiYkBY2LHLSFR3bcxEYwJEBNLwBDLf5ptvOExEUKQFhPitgLBSJMbyuqQiqKuniiKGl/Q9liGIBhU6y8Eg4fdWh+3eJE+Lw2xsYSq7UhvM/i84PWCtwnZUA+N9aqrUmO9Kqa6Q6uwEtZ0sKZBarp6P7V3V3OORds5UlsTQEoZFW5ifYVBJ7h8YhoTMxN4cnUlFfU+7vy4hJ+Pt3H+yMhPBHHZZZfxxz/+kRkzZuD3+1m8eDFr1qzh5ptvDrdpYe0flKlzCRXvRn72HvKFx5CKDjF5Vlhs0Yherp6cTonL2x67B/DxPjdDLXEsLAxvAWKNyEPu/Ba5vGMML07/Ya/ur0uiory8/PtfpNGJkTYjT56dz/Mb7Hy+v47XdzjZXNnIbbMzyTH1z5nZtirJfVn0TgihrjKYUxAFIzFlZtJYWdnuzy+lVAfgTgfUOpAeF9S5wONG1qnuVNS51Rn+QAB8PvC1zvC3crjwqIxP5cmRP6XIpAZ3zq/awDVF72D8pIVQDx2T6/tf0oEQquBJNEGyBWG2QHKKuurQ/tgCyalqfEuEkGzRIwR4myXNTRJjQmQPlMPBuIwEnlo0mD+vq2LNoXoWb3awqbKR22ZlYu2BIO6e5ssvv2T69OmMGjWKhx9+mK+//pr58+eTmJjI//3f/7UXwhvIiJ9cBY31yLVfEvrrI4gfX4lYcJ4mqjW6jEEnuGtuNrcfEbj9tw1V5CbHMNLW/70iNLqG3LOd0BO/aX+sPPKPXr/WdGn0d8MNN/SqEf0Vo0HHLTOzmJKVyF++qWJfrZfbPyzhqslpLCzo3QJefU0oJNvdnyKpkrYQQh1wJ5ogbyjH+8allNDcCI0NavxBUwM0NSAb66GxEdnYwOdeEy9QiFfoMYZ8XO9Zy5yWvZCRoQYzBwNq5VwpW7ehzo+FULNk6XTqVlE6P46NRcTFE2dKxgsQG9d6i1e3iUmIBJNaUTohSd0aExBK9MXs6PUCc4oOd22QWkcAY0LkxKBEEkmxOu6am8Vn+z08v8GuJoL44AA3TM9gdm5kJYL46KOP+Pvf/86kSZOYO3cu5557LjotILkTQtHBFbdAXDzyy4+QS/8BJUVwyQ1HxSdpaByP5Hg1ucP/fHoQX3vgNjyyopzHzsrvkcxxGtFNaPVnyBc7srUqv3wQYbH2+n5PaPR36NAh1q1bh9vtJjk5menTpzNo0KCetq3fMDvPxHBbPE+trmSrvYlnv7GzsaKRG6dnYI6LnAH4yeBxBQkFwRAjSDRFT1BpG6Jtxt/YuSCfAOpbgvzlmypWH6wHYHRaPLfNGootYVyv2GHNzKTysNWW/orFqldFRU2AnHxNVBwPIQSnD01mlM3I46srKHJ6+cPKCk4b0sg1U9IwGiJj4P7II49QUVHB119/zSuvvMKzzz7L9OnTmTdvHiNGjPj+DxggCJ0OLr4e0rKQr7+IXL8SeWAvymU3HhVLpqFxPApT47lhWgZPrqlsb3N5gzyyspzfnZ6LoYuFVjX6FzIUIvTs76E1eyaAcvsDiBE9P145Frr777///u68Yfny5Tz11FNYLBYsFgs1NTW8+uqrJCYmMmTIkF4ys29pamoiFOq6M0tbAcCGhobjvsZo0DF/sAmjQWG7vZlDHh9fHPAwyBxLlin8A6quHMN3UXHIh6MqgC1dT05eeNxsTvYYjsXWqkbu//wQe51edAIumWDjhmkZJMb2zkCuN46hL+mO/cGgpOKQn1BIkl8QOa5ZkfobJMXqOHWImZBUq+rud7WwsqSeISlxpCV2npns7jHodDoSEk5+pjwpKYnRo0dz1llnMWrUKCoqKli6dCnLli3D4/EwduzYk95HuOlu/3AshBCIoSMQoyYgd20BZzVyzRdqJrahI06qAGgknru9xUA63mMd6+CUOJr8QfbUdGRWczYFcDUHmJqdGLXeEAPpd4WeO15ZXUnotkugqqy9Tbn/GcSQk6++3tU+otvT5G+88Qb33XdfJwGxcOFCfv/733P66ad39+MGFIoQnD8ylfEZCTy2qoJDHh8PfFnG6UPNXD05cmYcT4RwxFP0Jv5giH9uqeHtXbVIICsphttnZ1KY2n8LDfU1bedKvSeE3xfCEKPNrH0fekVw6QQbkzITeHKNmnns3uUH+eGIFC6ZYCMmgmYnCwsLGTx4MCNGjOCVV17h3Xff5eKLLw63WRGFGDoC5TdPI996Bfnlh8jVnyE3rUacfSHi9B/2afIEjejkiolplLpb2FLV1N72abGHoZY4zhrWPytua3RGBoOE/vIQbF3fqV15+t9dLhrcU5zQCDAnJ6fT48zMTBQlcjqzSGdwShyPnZnPK1scvL/bxfJiD1sqG7lpZibjM6LPr1ZKSa0j8uIpTpQSl5cn11RywKUWfYvGWgHRQGycQkKiQmNDiFpnkPRM7fvtKqPTjTy1KJ9/bKzm02IP7+x2samykVtnRkbq2e3bt/P111+zbt06LBYLp59+OnPnailUj4WINyIu/gVy+imE/vU3KN2HfHMx8vMPVHExZ0HYi3tqRC46RfCrOdn8alkJ9gZ/e/sLG+3kJ8cycgCksx+oSCmRn76jxmYdhjjv5yjnXBQWm7rt/qTT6Xj33XfbM3mUlZWxePFi5s2bh81mo6WlhZaWFuLiwt+xnSi94f50JHpFMCkrkbHpRrZXN1HdGOCLA3V4vAFGpxn7vJDNySy/NTWE2Le7BUWBMZPiUcKU8vJklxCDIcmbO2p5bHUFtc1BkmJ1/HJ2FheMSu2zVMDRvuzbXfs97iB17iDxRgVbemQMnKLlNzDoFKblJFGYGsfWqkaqGwN8VuxGomafM5v61v1p//79vPfeezz77LOsX7+eoUOHctlll3HRRRcxcuRIjMb+MbjpCfenYyEsVsScBZCWCSX7wO2EbRuQqz9Xg7uychH67/6PRMu521MMpOP9rmON1SuMTTfyxX4PrXHbhCRsqGhgXr4p6rwgBtLvCt0/Xikl8psVyP+7GXZ+2/GEXo/y+CsoYyb1uI295v700ksvAbBx48ZO7Rs2bODFFzsKbCxZsqS7Hz0gGZ1u5KmzB/Pyt9V8VOTmoyI331Y2cvPMzKgpmNdWn8Js0aGL0qqeZXUtPLW6kr1O1Td1Wk4i/29aBsnx0b/yEslYrDoOHeg4hzS6z5TsRP60aDDPrrez+mA9S7fXMDvXxKDsvrXjt7/9LdOnT+fGG29k9OjRUevPHU6EoiBm/gA5ZQ7y60+QHy4FVw1yyd+R7/4bccqZ6s2aHm5TNSKM/JQ4bpmVyR9WVrS3ub1BHl5RzkMLciPKNVLjxJChEGzbQOij16F4d6fnlDseRgwbHSbLOuj2iEkTCz1PvEHh+mkZzBiUxDNrK6lq8PPrTw9y7ogULhlvIzbC3W6iOZ4iJCUf7HGxeLMDX1BiNChcOyWdHww2aYOiPsBiU88Zd22QYFBGrSgNN6Y4PXfOyWJFSR31viC5yX0f+P78889j0Nx0egRhMCB+sAg5ZwFy9efIT98Bezly2RvIj9+EkeNR5p4BE6Z/7+qFxsBhdq6JC0e3sHSHs72tyOnlr+vt3Dg9Q+vTohTpbUau+Ry5/D2obhWNhhjw+xBX344yY35Y7TuckxoFBgKdZxf1+ugbVEYSEzITePqcwfx9YzXLiz28u9vF+vIG/t/0DMamR26sRbTGU9gbfDy9tortdjXAbXyGkZtmZGJL0DrpviIhUSEmVuBrkXhcwag7hyIJIQSnDDaHbf+aoOh5hCEGccqZyLlnqDOUn70Hu7bAzs2Edm6GRBNi1qlq3EWmltZdAy4eb6XE7WV9eWN72/LWwO2ztcDtqEKWFiNXfIxc9xW0tFZQj09AzDsDseB8hDnyfs9u9+C7du3ipZdeoqys7ChRoa1inDxGg46bZmQyc1ASf1lXRWW9n3uXH2LBUDNXTEzrtVSmJ0pLS4iGetW/2GKNLNuOR0hKPtnn5qVNDpoDIWJ1gisnpXFmYf8qSBgNCCGwWPVUlfuprQlookJD4xgIRYHx09CNn4Z0VCG/Xo5cvRzctchP3kZ+8jYMHYEyZQ6Bsy8It7kaYUQRgttmZXHHx6WU1/na21/YYCcvOTZq3KoHKtJZjfxmJfKbFVB2oOOJtCzEaecgZp2GiIvcLJTd7sGfeeYZzj33XGbMmEFMjJburreYkp3In84ZzCubHXxU5ObTYg8byhu4bmo6syKokq6r1fUp0aQQExvZblqgxk78eW0VOx2q6h9li+fmmZlkJmnncriw2HSqqHAEQKuRFtVIKXE6nVgsFi0jYC8hbBmICy5B/vBnsH0joZWfwLYNULybUPFuKpe8oNa6mDQLMXk2ItUWbpM1+piEGB3/c0o2dywrpcmvTvoFJTyyspzHz8rHqlXcjiikx0X9hhUEPn0find1PKHXIybORJxyJgwbExWTnt0WFYFAgAULFqDTRcesdDSTEKPj+mkZzMs38cy6KsrrfDyysoLpOXVcNzU9Ii4MbQG2kT7DHAhJ3tzp5D/bnPhDkji94JLxNs4eloIuTNmqNFTazp3amiBSyqi4cGocn9tuu43FixeH24x+j9DpOlYv3E7kxtXIjatg3y4o3o0s3q2mmhw8TBUXE6ZDWqb2/xog5Jhi+eXsLB78sozWhFB4vEF+rwVuRwTSXYvctgG54WvYtRW3bM0oJ4QqIKbNVScGEiNnErkrdHskeNFFF/Haa69xwQUXkJiY2Bs2aRzBqDQjT56dz9LtTt7Y4WRdWQNbqhq5aIyVc0dY+jz97OFEQzxFkbOZP62totSt1p2YlJnAf0/LOKoKsUZ4MKfoUHTg90ka6kMkmbQJi2hFCEFBQQGlpaXk5+eH25wBg0hORZx2LuL0H5IWo6dq2duENqyCoh1wYC/ywF7k6y+CLQMxeiJi9CQYMRYRp7nC9GemZCfy8/FWXt1S095W5PTy7Dd2bp6hBW73JTIUgpIiVUhs3QAHizs9HzNsFIEJM2HKHERKapisPHm6PRLMyMhg6dKlvP/++0c9p8VU9B4xOoWfj04qITwAACAASURBVLcxOzeJ59bb2eVo5uXNDj7b7+HaKelMyOz7QO5gUA2uBdWFJdKobwnyzy0OPt7nJiQhKVbHNZPTOCVfy+wUSSiKICVVj7M6QK0joImKKCc3N5ff/e53zJw5E4vF0um/dt5554XRsoGBLtWGcuo5avYojwv57RrkpjWwdwc4qpBffoT88iPQ6aFgZIfIGDRYuy72Q348OpUDrhZWHaxvb/t8v4cCSxyLhkdeoG9/QjY1IHdshm3rkds3Qb2n8wvyCxHjp6FMm0f6hMlUVlYipTz2h0UJJxRTcfbZZzN9+nQtpiIM5KfE8fCCXL44UMdL31ZTVufjN58fYnZuEldOSuvTzEXu2iChEMTGCYwJkbOUGgxJlhe7WbzZQX2LKnrm5Zu4ZnIa5rjIXVEZyFisOlVU1ATIG9r36VA1eo7m5mYmTpyI1+uloqLi+9+g0WsIcwpi/tkw/2yktxn2bENu34TcsQkcVerjPduQby4GUzKicDQUjkYUjoKcPISiCfxoRwjBzTMzKavzta/WA/y9teL26HRttaqnkE0NULRT/U/t3QEH94M8rFBmvBFGTUCMnYoYOwlhUkVdfxLz3R5h+f1+Fi1apAXhhREhBKcOMTMtJ5F/ba3hw70uVh2sZ0N5A+ePsnD+SEufVNBsc31Kseoj5k+xrcLDQ8tK2FerFrHLNcdw7ZR0xmVEbkpejbZ6FS3UOoLhNkXjJLnhhhvCbYLGMRBx8TB+GmL8NABkdQVyx7fqDOrurVDnVmMyNq5SffDjE9SA78JRqtjIL0RoaYOjkji9wq9PyeaXH5VQ7+scuP3YWflaGvUTRDbWQ9EO5J4dyL3b4NABOHKlISMHMW4KYuwUKBiF6OelF7p9dBdeeCH//ve/+a//+i/i4uJ6wyaNLpIYo+PaKemcPtTM39bb2eloZsk2J8uK3Fw0xsrCwmT0vRiE7GwVFam28P9JnE1+/rmlhs/2q8uLRoPCxeOsnDUspVe/A42eISVVDwKaGkN4m0PExWuTFtGMx+OhuLiYhoaGTsv5p5xyShit0jgckZaFSMuCHyxC+v2wfw+yaAeyaKdarbe5EbZvRG7fqIoMvQEGFyIKRiLyCiG/ACy2iJlQ0vhu0hNjuHNuNvd/fohg61/S06JW3H54QW7EF9kNNzIYhPJSZEmRGhuxfw9UHDxaRKRnI4aPUYOth42J6viIE6Hbo8GXX36ZQCDAO++806nYkRCCV155pUeN0+gag1PieGhBLqsP1fPqZgcV9X7+tsHOe3tquXS8jVm5ST1+4Q+FJK6aNlERviXyhpYgb+x08v4eF77WK+VpQ81cNt5Gcnz4xY5G1zAYBCazjjp3kNqaAFmDNNfKaGXt2rX85S9/ITc3l/379zNkyBD279/P6NGjNVERoQiDAYaPUQdDtA6gyg50iIyinao/eNFOZNHO9mxCJCZBXgEirxCRXwB5QyHFqgmNCGVcRgLXTknnufX29rbiWi/PflPFLTO1zGBtSCnV+KOSIjhQhCzZqwZW+3xHvzgjBzFsjPr/GTYGkWzpe4MjiG6Pup588slOj0OhENu2bWP37t09ZpRG9xFCMDvXxPScJD7Z5+bf22qorPfzh68rKEyN46djrUzOSuixi0adO0ggoE5emcx9Lyq8gRAf7nXxxg4nDa3LuaNs8fzqjFFYRVPUBzsNRFJtraLCoYmKaOZf//oXt99+OxMmTODKK6/kwQcfZO3atWzdujXcpml0EaHTtYqFAjj9PPV6ai9XBUZJEbJkH5SXQEM97PhWdaNqe3OSWXWVyhuKyM6D7DywZfZ7t49o4axhKZS6W/ioyN3e9sWBOoZa4jh3xMAbEEu/DyoOIctLoKwEWV4KpcXQWH/0i+ON6rmdX4gYPAyGDI/IqtbhpNv/cptNLaSzf/9+Vq5cyerVq/H5fMybN6/HjdPoPnpFcPawFOYPNvHuLhdv7XJS5PTywJdlDEmJ5cIxqcwYlIRykuLicNcn0YfuRY2+IB/udfHObld7EHauOYbLJqQxNSeRrCwzlZVNfWaPRs9hseo5UOTDqcVVRDVut5sJEyYA6mRHKBRixowZ/PWvf+W6664Ls3UaJ4IQQp2RzciBuWcArYOxslJkaRGU7EOW7lPdQeo9sG2Dmjqz7QN0esjIRmTlQnYeIjsXsnLBmq4Fg4eBa6akU17nY6u9o6/8x6Zq8lNiGZveP+MPZSgEzmooL0GWlXYICHtF52DqNvR6GDQEkV+o1nrJL4T0LLW6vcZx6ZaosNvtrFy5kpUrV1JTU8PYsWPxer089thjWK3W3rJR4wQwGnT8dJyVMwuTeWd3LR/udbHf1cIjKyvIMcVwzvAU5g82E284sT9Im6iw9FE8hbPJz7IiNx/sddHYujKRkWjgJ2NSmT/YjE4R2tJtlJPSWuukzhPE75cYDNrvGY3YbDYqKyvJzMwkOzubFStWkJCQQGysltWrPyEMMWqMxeDC9jbpa4FDB1SB8f/bu/P4KOr7f+Cv2TPZXLub+yQhEG5QoJxqEVprW6uiFbEWpGCpgvpFS1W0VvRbpdZabQXbr1/Aqx6goj8P/HohGkBQRG4hhNzk3GQ32WSz9/z+mGTDSoBcm9nj9Xw88khmdnb3/cns7Mx7PlfFSYjVlVKi4bBL7dFPlQNfF3YlGxoNkJ4DISMbSM2UJudLSZfm09BxHqxAUSkE3H1xJlb+XxlqW10AAK8I/LWwGn8P8Y7boq0VqKuGWFctJQx1pyDW1wC1pwBHe/dPiomTkt2sXOl39lAgK5cDE/RBj68I77//fpSWlmLs2LG4+uqrMWXKFMTExGDp0qV+fSsouOijVbjpwhTMHZ2I94434b1jZlS1OPHvr+vw0v4GzMlPwM8KDMiI7/kJXxRF3yg9geykLYoijjW0470iM76ssPo6l2XFa3Dd2ERcPCSes2GHkWidAroYBWxtXpgb3UhJ4/dKKJo/fz7MZjPS09Nx4403Yu3atbDb7Vi8eLHcoVGACRqtNGJU/kjfOtHrBZoagFMVEKsrgOryjt+VUhv18o5ajs7tO/+IjZeSi5R0oONHSE4HUjKA2IHvJxhp4rRK/HFWFu7+sBw2l3SjrsXhwZovqrDmx0OCtuO2KIqArVWqdWiohVh7CqivgVgn/T5jLojTqVRAWraUPGQNkZrnZeUCCUZ+ngZIj68IW1paoFarodfrYTAYEB0dHci4aIDFa5X41fhkXD3KiG0lzXj/uBnVVhfeOWbGO8fMGJUcjasv8GKcXkSM5txfJtZmL1xOEUqlNBvyQDPZXPiirAXbS1v8xtUenRyNX4w0DEjzLQpOxiQlbG1eNDUwqQhVkydP9v09cuRIrF27VsZoSG6CQgEkpUpNnSb8wLde9HqAhjqpBqO6QrpArK8BGmqAZjPQ2gK0tkAsLep6Tucf0TqpQ7gxCU2ZQ+CN0kHsWIZB+hFYM3Ze2Qla/H5mBv68vcr3vz3Z5MAze2qxYoY8HbdFtxtoMcPeWANv0TGIjfVAUwPEpgagsUFKUB32c79IglFqqpSaIf1OkX4jJYN9ewKsx//dp59+GkVFRSgsLMTatWshiiKmTp0KZ3e94Slo6dRKXDHCiJ8VGLC/pg3vHTfj25o2fNfQju8+Pg6VQsDEjBj8IDMWkzJikKg788Lu9PkpFANUU1DX6sS+6jbsrLDicJ3N9wWnUQq4JDcePy8wYKiRQxiHO2OyClXlLjSZ2K8ilBQXF59/IwDDhg0LcCQUKgSFUrrQS82AMHG632OivV2anK++xpdoiPU10p1oswlotwHtUs1H2+F9Xc87/UVi4qQEw9iRbCQYgDg9hLgEID4BiNNLncqjdRF9l3pyZiwWTUzGc/safOu2l7UgPzEKVw5gx23RYQdaLFLC2GKB2GLuWLZAbLEALWbA3AhYmgDRi4bzvWBcgpSopmZ2fY5SM6QarShO6CeXXqVsBQUFKCgowKJFi7B//34UFhbC4/Hgvvvuw+zZs3HttdcGKk4aYApBwMSMWEzMiEWjzYXCcisKK9pQbGrDV1Wt+KqqFQAw1KDFhLQYjEiKxojkaBijVf2en0IURTS2u1HcaMfhehu+rW5DVYt/cjo6ORo/zIvHzJx4xGnZkS9SGDv6VZgb3fB6xQFLWimwnnzyyfNuIwgCay2oR4SoaCA7D8jOw/e/AUSnQ2r60mQCzCbEuh2wlpdC7FhGk0lqO99mlX6qSv2SjTPGBVSpuhKM+AQp6ej80cUC0TEQdDFS7Uh0DND5t1oTNsnIVSONKLc4sa2kq+nQc/vqkavXnjFxrOjxALY2qQlSx2/R1gq0tXask9aLbdbTkojms/dn6I5KBVVyGjwJRsCY3PGTBCExpetvDWuiglGfrgqVSiUmTZqESZMmwW63Y/fu3di5c+dAx0aDJFGnxtzRiVg2Zyx2HS3Fnkppdu4TjXaUmB0oMXc1QUqOVuFnHiPUUOB4uw2WKhfitSpEqxXQqRXQqhTweEU4PV64PCLa3V6Y2tyob3OhweZCdYsTJ5vssNj970QrBGBkUjQmZcbikiHxSIll05dIFBuvgFojwOUU0Wz2SJPiUdBbt26d3CFQhBA0WiA9G0jPhiAISEhPh62mxjeMuCiK0sR95kagyQTR3CAlGtZmiC3NgNUiXexamwF7O+B2S8mI2SQ9v5v37HaAcpVKSjL8ko0YqdmVWit1QlerT/u740ejlTq5azTSY2q1tF4QAIUCEBQdv09bFgRAqYQnSgPR2gxREKT1ohfweACvB/B2/u2VljvXe7637HYDTruUnDkcgNMBOOy4xeFENQpwDAkApI7bj398An+tewcpbY1dCYO9F8nB92k0UgKXYADi9RDipd9I0EOI10vNlhJTICQYkJ6ZiZrT9iuFhn6fsaOiojBr1izMmjVrAMIhueUZopCr1+L6cUmw2N3YV92GYw3tOG5qR0WzA452EWqVAh5RxIvH6+E53rf3UQjAEL0WBYnRuCBdhwlpMYjRsEYi0gmCAGOSEnXVbjSZ3EwqiKhXBEGQahh0sdJIPufYVnQ6AGuLlGicnnRYm4GWZojtbVKCYmvraHLV8VsUpYtza/MZHYN7cgnc18vk6j4+rydUAO5Wx+LuSbfDFCXNvdCiiMJjsTPx6IlnoPW6/J+gjQZiYrr+17pYqUZHFyutj4mTEoXTkghERfeodidcaoAiEc/YdFb6KBVmD03A7KHSnQuby4MDR2wwHffAqxMxRR+H+jYnWp1etLu8sLm8cHulr0uNUoBWKUCjUiBJp0KSTo2UGDVSYtXIN0qJS7COLkHyMiappKSiwYP8EXJHQ7114403nvWi4D//+c8gR0N0doJGCyQmSz/AOROQTqLXK3UUtvknHL4ExOmQRrVydf52Ak4nRJcDcLk6lh2+9XA5AbdLqmEQxe/99nYtd/7dHYUCUCgBpbLjd8eyb53itMeUgDYK0GgBTZT0P9BqAY0WBo0W9ynrsao1AQ5I5+fSuEz868qHcOdIFYSYOCCmo0kYOzxTN/ipoB7TqZWIsisAeDA6LxrXjDuzE5fbK0Ip8E4D9V3n3CdNJjdEUeRnKcQ89dRTfstmsxnvvPOOb0I8olAmKBQdTZ50AJK71gf6fQUB6enpqK6ulvo1iF5f86iB/I7MB7CiogWPFXbVi3xhUWGoIxlz8xMH7H0oPPFWMfXK+TppqzgJHfVTgkEJhRJwOkS0Ws9yZ46CVnJyst9PQUEBli9fjv/3//6f3KERhTxBECAolRBUaggKZUDOtzNy4vGr8f4TGr/wbQP2nmod8Pei8MKkgnrM1uZFu02EIIBt3SlglEoBxo7PV2O9W+ZoaCBYLBbYbDa5wyCiHpo3NhEzc+J8yyKAJ3ZWo7LZcfYnUcTjlSH1WOcFXoJBCZWatREUOIkpKpjq3WisdyN3GIcODCWPPvqo391Th8OBkpISXH311TJGRUS9IQgC/mt6OmpbnTjZJCUSNpcXf95ehb9dnsuh3qlbTCqoxzqTiqRUfmwosDr7VTQ2sF9FqJkxY4bfclRUFIYMGYL09HSZIiKivtCqFLj/h1n4w/+Vo7FdOv/Xtrrw1x2n8OCl2VBxHiH6Hl4dUo+IoghTvTSkXFIKPzYUWIZEJRQKwGEX0dbqRWwc74qFCg4vThQ+EnVq/HFWFlZ9XA67Wxrd8WCtDRu/qcPSH6TJHB0FG14dUo/4+lMoAEMSPzYUWEqlAH2iEk0NHjTWu5lUhJD169d3u16lUiExMRGTJ09mrQVRCBlqjMLKmZl49IsqdIwaj/eLLBiij8JPhuvlDY6CCjtqU4+Y6qSqT0OiEioVqzwp8BJPawJFoUMQBOzcuRN2ux06nQ52ux07d+6E0+lESUkJ7rnnHuzYsUPuMImoF36QFYvFE1P81v3P17U4UscBGKgLbzlTj5g6+1OkqGWOhCJFYooKJ4460FjPfhWh5NSpU7jvvvswfPhw37ri4mK88sor+NOf/oSDBw9i48aNuOiii2SMkoh66xcjjahpdeH942YAgEcE/lJ4Cn+7fAhSYzUyR0fBgDUVdF6iKPpqKthJmwaLIVEFQQHY20XY2jhfRagoKSlBXl6e37rc3FycPHkSADBu3Dg0NTXJERoR9dOSiSmYnBHjW25xePDI56dgc3lkjIqCBZMKOq/WFi+cDhEKJWAwsm07DQ6VSoDeIH3eOF9F6Bg+fDjWr18Pi8UCQJqjYuPGjSgoKAAAVFVVQa9nO2yiUKRUCPj9RRnIM3QN9V1uceCpXTXwiqKMkVEwYFJB59VZS5GYrIJCySYoNHgSU9ivItQsX74cra2tuPXWW3HDDTfg1ltvhdVqxfLly/22IaLQpFMr8cdZWTBGd7Vc2FPVilcOmGSMioIB27LQeXX1p+DHhQZXYooKxd85WFMRQvR6PVauXAmv14uWlhbEx8dDoei6f5WdnS1jdEQ0EJI6hpq977ShZl8/0ogcvRaX5MbLHB3JhTUVdE6iV+ya9I5JBQ0yY6IKggC029ivIpQ4nU5UV1fDZDKhpKQExcXFKC4uljssIhpA+cYo/H5mBk6fA+/p3TU40dguX1AkK14l0jk1WzxwuUSo1EC8gf0paHCp1AISDEpYmqT5KnR5HGEk2H3xxRfYsGEDNBoNNJqu/SUIAtauXStjZEQ00KZkxWHxxBSs/6YeAOD0iFjz+Sn87ae5fs2jKDJwj9M5dTZ9SkxWQaFgfwoafIkpKimpaHAjm0lF0Hv55Zfx+9//HuPHj5c7FCIaBFeMMKDa6sTWImlwhsZ2Nx79vAqP/jgHGiUbxEQS7m06p66hZDk/BcnDNwke+1WEjDFjxsgdAhENEkEQcPOkVEw6bajZE412PP1lLUSOCBVRmFTQWXk9IppM7E9B8kpMlvpV2Nq8sLVxLPRgN2/ePLz66quw2+1yh0JEg0SpELDyogzk6ruGmv2ivAWvHuKIUJGEV4p0VuYmDzxuQKMVEJfA/JPkoVIL0BuVMDd6YKpzI2co+/YEs40bN8LtduPdd9+FWi3VcHbOiP6f//xH5uiIKFB0aiUeuDQLK/+vHOZ26YbkpkONyIjTYFZegszR0WBgUkFn1VDrAgAkp6ogCOxPQfJJTlPB3OhBQ50bOUO1538Cyeapp56SOwQikkmSTo0/zcrCqo8rYHdLI/Y9vbsGyTFqjEnRyRwdBRpvP9NZ1ddIdxqS09ifguSVlCJ9Bk11brbRDXLJycl+P0lJSaipqcHmzZvlDo2IBsFQYxTuubhrqFm3F1jzxSnUWJ3yBkYBFxI1FVu2bMG+fftQVlYGlUqF559//oxtTCYT1q9fjyNHjkCj0WDmzJlYuHAhVKqQKGLQcdi9aDZL7deT0/g/JHkZEpVQKgGnQ4S12Yt4PZtABbuSkhIUFhZi165dcDqduOSSSwL2XjxHEAWXiRmxuG1qGv65uxYAYHV48PBnVfjrT4YgTsvv73AVEt+mbrcb06ZNQ0FBAbZt23bG416vF2vWrEF8fDwefvhhWK1WrFu3DgCwePHiwQ43LDTUSrUU8XoloqJZoUXyUigFGJNVaKh1o6HOxaQiSNXV1aGwsBCFhYUwmUwYN24c7HY7nnjiCSQlJQXsfXmOIAo+c/L1aLS58fJBqbN2tdWJvxSewupLs6FWskl1OAqJq8V58+bhiiuuQE5OTrePHzhwAFVVVbj99tuRl5eH8ePHY+HChfj0009hs9kGOdrw0NmfIoW1FBQkklOlz2LnMMcUXO6//37ceeedKCoqwtVXX41nn30W9957L7Rara/DdqDwHEEUnK4bm4jLhnV10j5cZ8MzX3Go2XAVFleMRUVFyMnJgdFo9K2bMGECXC4XSkpKMHbs2G6f53K54HK5fMuCICA6Otr3d091bhvKnZlPL4MoiqjvqKlISVeHTLnCbT+EokDGn5ymBg7Y0djghigiYJMxhvo+AOQpQ0tLC9RqNfR6PQwGg++7NBj05RwxUOeHwRQOn93eiKTyhmpZBUHArVPSYW734OtTrQCAbSXNyIzX4Lqx3ddehmpZ+yqcyhsWSYXFYkFCgv9wZbGxsVCpVLBYLGd93ltvvYU33njDt5yXl4fHHnsMycnJfYojLS2tT88LJmlpaTDVt8PpsECtVmD0uGwoQ6yaMlz2QygLRPxpaSL2fFEEe7sHSuiRlh7YkURCfR8Ag1uGp59+GkVFRSgsLMTatWshiiKmTp0Kp1P+zpl9OUcM9PlhMIXDZ7c3Iqm8oVrWJ36Zils3f4sjNS0AgJf2N2B0Tip+NCLlrM8J1bL2VTiUV7akYvPmzX5f2N1Zs2YN8vPze/R63WV4nWOjn83cuXNxxRVXnPEaDQ0NcLt73sRCEASkpaWhtjZ0q/ROL0PREak5gDFZifr6Wpkj67lw2w+hWIZAx29MUqC60oNjR2shKgJzJzzU9wHQ+zKoVKoBuVguKChAQUEBFi1ahP3796OwsBAejwf33XcfZs+ejWuvvbbHryX3OWKgzg+DKRw+u70RSeUNh7LeMzMV93zYjhqrVAO46p3DUP4kFyOT/b/Lw6GsvREK5e3pOUK2pOLyyy/HzJkzz7lNT09yer0excXFfutaW1vh8XjOuDt1OrVafda2vn3ZsaIoBu0HoqdEUUR9TVd/ilAsT7jsh1AuQ6DiT0pVobrShYY6FwrGRA34658u1PcBIF8ZlEolJk2ahEmTJsFut2P37t3YuXNnr15D7nPEQJ8fBlM4fHZ7I5LKG8plTdAq8dDsbPzh/8rR7JBGl3zw0wr84+e5SI3VnLF9KJe1L8KhvLIlFfHx8YiPjx+Q1yooKMCWLVtgNpthMBgAAAcPHoRarcbQoUMH5D0ihcslosnUMZRseli0jqMwktTRWdvc6IHbJUKlDq2meZEoKioKs2bNwqxZs3r1PJ4jiMJPaqwGD83Jxl0flMErAu1uLx76rAqP/2QIYjQc1S/UhcToTyaTCWVlZTCZTPB6vSgrK0NZWRnsdjsAqcNdVlYW1q5di9LSUhw6dAgvvfQS5syZA52OMzj2hqnOBVEEYmIViInlAU7BRRejQHSMAqIXaDQFZxMUGnw8RxCFjjxDFP48p2uktlMtTvy18BTc3tC+S08h0lF706ZN+Pzzz33Ld999NwDgwQcfxJgxY6BQKLBq1SqsX78eDzzwADQaDS666CIsWLBArpBDVn3HULKc8I6CkSAISE5RoaLUCVOdG6npnO2deI4gCjVjUnVYdUkm1nxxCgCwv9aGZ7+uw61TUsNiFKRIFRJXjsuXL8fy5cvPuU1SUhLuvffeQYooPImiiIaarqFkiYJRUpqUVEhzqQTPsKUkH54jiELPtOw4LJ+ahnV7pAFhPiy2IDVWjV+eZahZCn4h0fyJBofF7IStzQtBASQmh0S+SRGocxI8a7MX7TavzNEQEVFfXTZMjxsndCURL+5vwPbSZhkjov5gUkE+5SetAICkFBU7wFLQ0mgVMCRK/X06RyojIqLQdN2YRPxihMG3/Ped1fi6vEnGiKivmFSQT1lHUpGWyaZPFNw6m+fV17CzNhFRKBMEAYsnpeDSvK7R3pZt3o8ys13GqKgvmFQQAMBu96Kuph0AkJrBpIKCW0rHcMcNdS54PRwxhIgolCkEAbdPS8ekjBjfujveL4XJxtroUMKkggAAdaekA1dvVCJax48FBbcEgxLaKAEeN9DEoWWJiEKeUiFg1SWZGGbsmtj05rdOos3pkTEq6g1ePRIAoLYjqWDTJwoFgiAgJU36rNaxCRQRUVhQKxV45MdDkBQjzbAtAlixtQwuDwflCAVMKghut4iGus6kQiNzNEQ9k5IhNYFiZ20iovARrVbgtd9M9S3Xt7nwp08r4RXZ1DXYMakgNNS64PUAcfFqxCXwI0GhITlVBUEAWlu8sLWyepyIKFwkRKvxwrXDfctHG9rxtx3VEJlYBDVeQZKv6VNufhxnsqSQodYoYEjqHFqWTaCIiMKJIVqF/70q37e8s8KKjfvqZYyIzodJRYTzekXUVUsXZLn5cTJHQ9Q7vqFla9kEiogo3KTEqvHvK4f6lt85ZsZbRxtljIjOhUlFhDObPHA5Rag1AtIydXKHQ9QrqR1JRUOdGx4OLUtEFHbS4zRYd0Web/n5bznrdrBiUhHhOps+pWaooVCw6ROFlrgEBaKiBXg9QGM9m0AREYWjrAQt/vGzXN/yk7tq8G1Nm3wBUbeYVEQwURRRW82hZCl0CYJw2uzabAJFRBSucg1RePwnQ3zLq7dV4ripXcaI6PuYVESwFosHtlYvFAr4xvwnCjWdM8DXnnJxZBAiojBWkBSN/56T7Vu++8NylJntMkZEp2NSEcGqK6U7uynpaqjUbPpEoSkpVQWFEmi3iWixcGhZIqJwNj4tBg/MyvIt/9fWMlS3OGWMiDoxqYhQoij6koqMHNZSUOhSqbpm1+7sI0REROFrCmUmggAAIABJREFUcmYs7r0407d867slaGjj97/cmFREqGZzR9MnZdcIOkShqrNPEJMKIqLIMD0nDnfOSPct3/z2SVjsHLBDTkwqIlRnLUVqBps+UehLzVABAtBi4ezaRESRYlZeApZPTfMt3/RmMVodPAfIhUlFBPJr+pTNWgoKfRqtAonJKgBADWsriIgixmXD9Lh5Uopv+cY3TqDVycRCDkwqIpDZ5EF7mxdKVdeMxEShrrMJVE0Vkwoiokjyi5FG/HpCkm/5xtdPsMZCBkwqIlBVuTRKQnqWGioVmz5ReEjPkpIKs8mDdptX5miIiGgwXTc2CdePS/Qt3/jGCViZWAwqJhURxuvpavqUNUQjczREAydap4AhUQmAtRVERJHoV+OTMW9sV2Lx6zdOoIWdtwcNk4oIU1/rhsspQhslIClFJXc4RAMqI0dKlKsrOWY5EVEkunFCMq4b05VYLHizmKNCDRImFRGmqky62MocooGgYNMnCi9sAkVERL++IBm/PC2xuOnNYjTaWIMdaEwqIojT4UVddWfTJ3bQpvDDJlBERAQACy5IxtxRRt/y4rdOosbKWuxAYlIRQU6Vu+D1AvF6JRIMbPpE4amzCdSpcp48iIgi2aKJKbhqpMG3fMs7JSgz22WMKLwxqYgQoiiiotQBAMjJYwdtCl+ZOWoIAmBp8qDNypE/iIgi2eJJqbh2dFeNxX9tLcNxU7uMEYUvJhURotnsQYvFC4UCyGTTJwpj2igFklKlmrhTFWwCRUQU6RZemIL5pw03e/eH5dhf0yZjROGJSUWEqCyVmoKkZamh0XK3U3jL7BguuarMCVEUZY6GiIjkdsP4ZL8J8h7cVoldFS0yRhR+eHUZAdxu0TfhHZs+USRIz1RDoQTaWr1obmITKCIikibIu+nCZN/yY4XV2FpkljGi8MKkIgKcKnfC7QJiYruahRCFM5VaQFqm1MyvsowdtomISHLN6EQsnpjiW/6fr+vw0v4G1moPACYVYU4URZSdkDpoDxmmgSBwbgqKDNm5HaNAVbjg8fBkQUREkqtGGfHbyV2JxRtHGvHP3bVwe3mu6A8mFWHObPKgpdkLhRLIZtMniiDJqSpE6QS4nCJqT7HDNhERdblihBHLp6b5lreVNOPP26tgd3Pi1L5iUhHmyoqlWoqsHA00Gu5uihyCQvDVVnQOVEBERNTpsmF63Dkj3bf8bU0b7vu4HJZ2t4xRhS5eZYaxdpsX1ZXSHdohw1hLQZGns3auodYNWxvvPhERkb9ZeQm4++IM3/LJJgfu/KAMFc0OGaMKTUwqwljpCQdEEUhMUUFvZAdtijwxsUokpkif/cpSniCIiOhMM3Pi8cCsLN9yU7sbK94vxcFazmXRG0wqwpTbJaL8pHQRlT9CK3M0RPIZki/VVpSfdMLLTnhERNSNyZmxeGh2tm/ZIwIPfFqJT05aZIwqtDCpCFMVJQ5pGNk4BVLSWUtBkSs9Uw1tlACHnR22iYjo7C5Ij8HjPxmCKFXXSJlP767Ff/Y3wMshZ8+LSUUY8npEnCzqqqXgMLIUyRRKATlDpdqKzuGViYiIulOQFI2/XZ4LY3TXDdnXjzTir4WnODLUeTCpCEOVZU7YbSK0UQKyctlBm2hIvhaCADQ2eNBi4QzbRER0dtkJWjx22RBkxHVdQ31Z2Yp7PypHfStrvM+GSUWY8XpFFH8n3Y0dNlILpZK1FETROgVSO2bYLmVtBRERnUdKrBp/uSwH+caufqmlZgdWfliG7xpsMkYWvJhUhJlT5U7Y2rzQaAXk5LODNlGn/ALpeKgqc8LezipsIiI6t4QoFf78oxxckKbzrWu2e/DHT9iBuztMKsKI1yOi6EhXXwqVirUURJ0MSUoYEpXwersmhSQiIjoXnVqJBy7Nxuyh8b51bq+Ip3fX4t9f1cLlYQfuTkwqwkh5iVRLoY0SkDuctRREpxMEAUM7hlcuK3bC7eaJgIiIzk+lEHDHtHTMG5vot/6DExY88GkFmjgDNwAmFWHD7RJRdMQOACgYE8VaCqJupGeqoYtVwOUUUXGStRVERNQzgiDgxgnJWDYlDYrTLrG+a2jHXR+wnwXApCJslBQ54HSI0MUqfMNnEpE/QSFg2EiptqL4mAMe1lYQEVEv/GS4Hvf/MAtRqq5LaHO7G3/8pALvHzdDjOD5LJhUhIF2mxfF30m1FCPHRUGhYC0F0dlk52oQrZMmwysvccodDhERhZjJmbF47LIcJOu65rJwe4Fn99bh8R3VsLkic+hyJhVh4LsD7fB4pI6oGdlqucMhCmoKpYBho6IAAMXf2eFhJzsiIuqlXEMU/nZ5LgoSo/zW76yw4vcflKHMbJcpMvkwqQhxjQ1unKqQJmIZNzGas2cT9UBOngZRHbUVnGWbiIj6Qh8tDTl78ZA4v/XVVhf+8GE5Piq2RFRzKNX5N5FXfX093nzzTRw+fBgWiwVGoxEXX3wxrrnmGqhUXeGbTCasX78eR44cgUajwcyZM7Fw4UK/bcKNxyPi4F6pY1DOUA0SDOFbVqKBpFAKGDEmCge+bseJow5k52mg0fIeSyjiOYKI5KRVKfD7mRnITmjEKwdNvvVOj4h1e2qxr7oNy6emIU6rlDHKwRH036bV1dUQRRFLly5FWloaKisr8T//8z+w2+1YuHAhAMDr9WLNmjWIj4/Hww8/DKvVinXr1gEAFi9eLGf4AVX8nR2tLdJEd6PGR53/CUTkk52rQUmRA9ZmL05858CYC6LlDon6gOcIIpKbIAi4flwS8gxaPLmrBjZX1wSrX1ZaUWRqx4oZ6RifFiNjlIEX9LfmLrjgAixbtgwTJkxAamoqJk+ejF/84hf46quvfNscOHAAVVVVuP3225GXl4fx48dj4cKF+PTTT2GzhecQX9ZmD058JzXbGDcxmndZiXpJUAgYNUFKJMpOONDWGpkd60IdzxFEFCymZMXh8Z8MQWa8/yicje1u/OnTSrzwbX1YT5YXkleiNpsNsbGxvuWioiLk5OTAaDT61k2YMAEulwslJSVyhBhQHo+IfbttEL1AaoYK6eycTdQnKWkqJKWq4PUCh/e1R1Tb13AW6ecIIpJPVoIWj/9kCH6QGeu3XgSw5WgT7vmoHFUt4dmXL+ibP31fbW0tPvjgA1+1NgBYLBYkJCT4bRcbGwuVSgWLxXLW13K5XHC5XL5lQRAQHR3t+7unOrcdrE7Sxw+3o8XigUYjYMIPYqBQ9D83HOwyBALLIL9Qi18QBIybpMP2/2tBfY0bddVuZGRrfY+FqlDbDwNpoM4RA3V+GEyRtt8jqbwsa2iJ1apw/6wsvHmkES8faID3tPtVJ5vsuGtrGW6enIrLhunDorydZEsqNm/ejDfeeOOc26xZswb5+fm+5aamJjz66KOYPn065syZ47dtdztDFMVz7qS33nrLL4a8vDw89thjSE5O7mkx/KSlpfXpeb1RVd6Kk8fMAIBLL89C7tC48zyjdwajDIHGMsgvlOJPTwcspnp8+5UJ3x1wYNyEbAChVYazCeUyyH2OGOjzw2AK5f3eF5FUXpY1tNyRkYEZI8y4/90jaLJ1zYvk6OjEfaTRjXt+PAJAeJRXtqTi8ssvx8yZM8+5zelf3k1NTXjooYdQUFCApUuX+m2n1+tRXFzst661tRUej+eMu1Onmzt3Lq644grfcufJpaGhAW63u8dlEQQBaWlpqK2tDWjzCVubF1981AIAGJKvgVbXipqa1gF57cEqQyCxDPIL1fjTc0QcP6JAq9WNbR+W4ie/yA+5Mpyut/tBpVIF3cWy3OeIgTo/DKZQPf76KpLKy7KGrkw18PfLc/C3HdU4XO/fh2t7sQnfVJix8kcjcKExeMva03OEbElFfHw84uPje7Rt58kiLy8Py5YtO6O5T0FBAbZs2QKz2QyDwQAAOHjwINRqNYYOHXrW11Wr1VCru++P0JcPsiiKATsAPB4RX+9ohdMhIsGgxJgLogPyXoEsw2BhGeQXavErlcCEH0Tjy+1tKCt2oLKsFSptaJWhO6G2H04n9zlioM8PgymU93tfRFJ5WdbQZIhW4eE52dh02ITXDzf6NYeyOj14cOtRTM6Mxa1TUpGkC91+skHfUbupqQmrV69GYmIiFi5ciJaWFlgsFr92sBMmTEBWVhbWrl2L0tJSHDp0CC+99BLmzJkDnU4nY/QDQxRF7P/KhmazB2qNgMkzY6BUhX7bO6JgkpSqRt5wacSO7R9Vw+nwnucZFAx4jiCiUKBUCPjV+GT8eU4OknRd9/SjVQooBGDvqVbc/l4pPg7hCfOCvqP2wYMHUVtbi9raWtxyyy1+j23evBkAoFAosGrVKqxfvx4PPPAANBoNLrroIixYsECOkAfcdwftqK5wQRCAyTN00MUEfS5IFJJGjo9Gfa0bbVY39u1uw5SLY8Ki81w44zmCiELJmFQd/vGzPKzdU4svK61od3sRpVZAEAGby4u1e2pRWN6C5VPTkBqrOf8LBhFBDNV0KIAaGhr8Rv04H0EQkJ6ejpqamgHPLk8es+PoATsA4IKpOmTnBuYDFsgyDBaWQX6hHj8AtDR7sPOTVrjdIkaMjULBmNCbWLK3+0GtVgddn4pg1dvzw2AKh+OvNyKpvCxr+BFFEdtLW/C/39ShzemFQgBiNEq0uzxwe4EolTSh3pUjjVAp5L251dNzBG95B7GSIocvoRg5LipgCQURdUnQq3DxnHQAwPHDdlRXOs/zDCIiot4RBAGXDk3AuiuG4uL8JHhFwOrwQKtUIE6rhN0t4oVvG3Dn1lIcqQ+NSTqZVAQhURRR/J0dR75tBwAMH63F8NGhd7eUKFQVjNYjb7g0X8W3e2xoMgXnaD9ERBTajDo1npg7DnfOyECMRoE2lxftLg8y4jSI0ShQ0ezEfR9X4B9fVsNiD+5zEZOKICOKIo7st+O7g1INxbBRWowYy4SCaLCNvTAaqRkqeD3AV4VtaDZ75A6JiIjCUGetxdorhuIHmbFwe4FqqxNRKgWy4jUQAGwracGyd0vwQZEZHm9wNgtjUhFEXE4vvipsQ2mRNH376AuiMGp8NDuKEslAUAiYOD0GhkQlXE4RX25vDfrEwusVOWoVEVGIMkarcP8PM3HnjHTEaRRotLlR1eJEaqwaCVFKtDm9+PfXdbjrgzLsrGiRO9wzMKkIEs1mNwo/bkV9jRsKJTBxmg75I1hDQSQnlUrA1EtioTd2JBaftcJUH5zVz7Y2D3Z91oq9O9sgBuldLCIiOjdBEDArLwHPXJmPy4frIQCobXWh3eVFYrQKWqWAMosDfy2sxlUvH8O+6oGZBHkgMKmQmdcr9Z8o/KQVba1eROkEzJwdi8wh7JRNFAzUGgHTfhgr1Vi4ROz+vBWVpcHTeVsURVSVOfH5h1aYTR40WzywtrC2gogolMVrlbh1Shqe+GkuRiZFw+kR0djuhkbp33rloc+qcNXLx1Brlf+8FPTzVIQzc6MbB/e2o8UiNalIy1Rj/A+iodUy1yMKJmqNgOmzYvHtHhtqqlzY/5UNjQ1ujJ0YDZWME1Ha2jw49E076muk2hNDohITp+kQE6eULSYiIho4+cYo/OWyHGwvbcHz39bDYu++Ge7v3ilBepwa//hZHrQqea4jmVTIoK3Vg+OH7DhVIY11rtYIGD0hCtl5GvafIApSSpWASTN0KDpiR9ERBypLnWhqcGP85GgkpaoHNRan04vi7xwoLXLA6wUUCmD46CgMG6WFQubxzImIaGB1duSemh2L1w834r3jZjg9ZzZzrbG6MG9TEX6cn4DlU9MG/ZqSScUgaja7cfK4A9UVLnTO55KVq8boCdHQRrF2gijYCYKAEWOjkZiswrd7bGhr9eLL7W3IyFZjxLgoxAa4hsDe7kVpkQNlJx1wd8y/lpiiwvhJ0YiNZ+0EEVE406mVuOnCFPxipBGvHzbho2IL3N20dv34ZDM+PtmMO6alYU6+ftDiY1IRYA67FzVVLlSWOmFp6qqySk5TYdT4KCQYuAuIQk1SqhqzLo/HsUPtKCt2orrSheoqFzKz1cgdpoUhSTlgd4g8HhGmOjcqSp2oO9V1QyIuQYFR46ORkq5iDScRUQQxRqvwux+k4epRRrx2qBHbS5vR3fgc/9xdi3/ursU/fpaLXEPgB//hFe0Aczm9aDZ70NjgRkOtG+bGrkRCUADpWWrkj9BCb+S/niiUqTUCxk3SIWeoBscP21FX7capChdOVbgQE6dAepYaKelq6I1KKJU9v+gXRRFtrV40NbjRUOdGfY3LVysBAIYkJYaNjEJqBpMJIqJIlhqrwX9NT8cvxyTinWNN2FbS3G2zqP/aWoaUGBWe+cVQqJWBaxnDK9sBcOgbG/bay2BubEe77cydqTcqkZGtRlauhs2ciMJMgkGFKRfHwtLkRlmxE6cqnGizSn0eir9zQKEE4uKViEtQIFqngDZKAZVKgEIBeL2A2y3NLWG3iWi1SiM3uZz+3yPaKAEZ2WrkDNUiXs9mTkRE1CUzXoNbp6ThV+OT8EGRBe8XmdHi8O/QXd/mxi9fK8Lz1wyDITowl/9MKgZAQ60LrVaHb1kXo4A+UYmkFBWS09TQxTCRIAp3eqMKF0xRYcyF0aivdqHmlAuN9W44HSKazZ5eTZynUAAJBiWSUlVISVMPaHMqIiIKTwlRKswfn4RrxxjxVVUrPi1pxjfVbX7bPLGzGn/+UU5A3p9JxQAYPiYK+gQ9XB4rYmIFaDgkLFHEUqsFZA7RIHOIxteUydrsgbXZC3u7Fw6HCI9bhOiVmkQqlQK0UQK0UQrExCkQF69AXLwSil40mSIiIuqkViowc0g8Zg6JR1O7G/uqW/Hitw1odniwYkZ6wN6XScUAyM7VIj1dj5qadogiZ7IlIokgCIiNUyI2Ton0LLmjISKiSGOMVuFH+Xr8aBBGgeItdSIiIiIi6hcmFURERERE1C9MKoiIiIiIqF+YVBARERERUb8wqSAiIiIion5hUkFERERERP3CpIKIiIiIiPqFSQUREREREfULkwoiIiIiIuoXJhVERERERNQvTCqIiIiIiKhfVHIHEIxUqr79W/r6vGDCMgSHUC9DqMcPRFYZwqGsgyUU/lehEONAiqTysqzhK5jL29PYBFEUxQDHQkREREREYYzNnwZAe3s77rnnHrS3t8sdSp+xDMEh1MsQ6vEDLAOFrkjb75FUXpY1fIVTeZlUDABRFFFaWopQrvRhGYJDqJch1OMHWAYKXZG23yOpvCxr+Aqn8jKpICIiIiKifmFSQURERERE/aJcvXr1armDCAcKhQJjxoyBUqmUO5Q+YxmCQ6iXIdTjB1gGCl2Rtt8jqbwsa/gKl/Jy9CciIiIiIuoXNn8iIiIiIqJ+YVJBRERERET9wqSCiIiIiIj6JXjnBJfZhx9+iHfeeQcWiwVZWVlYtGgRRo0addbtjx49ihdeeAFVVVUwGAy48sorcdlll/lts3v3bmzatAl1dXVITU3FDTfcgClTpsge/549e/DRRx+hrKwMbrcbWVlZuO6663DBBRf4ttm+fTueeeaZM577n//8BxqNRvYyHDlyBA899NAZ65988klkZmb6lgdzH/S2DOvWrcPnn39+xvqsrCz8/e9/BzC4++Ho0aN45513UFpaCrPZjJUrV573fxVsx0FvyxCMx0JvyxCsxwIFxpYtW7Bv3z6UlZVBpVLh+eefP+9zRFHE66+/jk8//RStra0YPnw4lixZguzs7MAH3A+tra147rnnsHfvXgDA5MmTsXjxYsTExJz1Od19rw4fPhyPPPJIQGPti0BcdwSrQJzfg1GgzqNBS6Qz7Ny5U5w/f774ySefiJWVleJzzz0n/vrXvxYbGhq63b6urk789a9/LT733HNiZWWl+Mknn4jz588Xv/zyS982x48fF6+//npxy5YtYlVVlbhlyxZx/vz5YlFRkezxP/fcc+Lbb78tnjhxQqyurhZffvllcf78+WJJSYlvm88++0xcuHChaDab/X4CpbdlOHz4sHjdddeJp06d8ovP4/H4thnMfdCXMrS1tfnFbjKZxN/85jfipk2bfNsM5n7Yt2+f+Oqrr4q7d+8Wr7vuOnHPnj3n3D7YjoO+lCEYj4XeliEYjwUKnE2bNonvvvuu+MILL4g33XRTj57z1ltviQsXLhR3794tlpeXi08++aS4dOlS0WazBTbYfnrkkUfEu+66Szx+/Lh4/Phx8a677hLXrFlzzuesXbtWfOSRR/yOBavVOkgR91wgrjuCVSDO78EqEOfRYMbmT9147733MHv2bMyZM8eXQSclJeGjjz7qdvuPPvoISUlJWLRoEbKysjBnzhxceumlePfdd33bvP/++xg/fjzmzp2LzMxMzJ07F2PHjsX7778ve/yLFi3CVVddhWHDhiE9PR2/+tWvkJ6ejm+++cZvO0EQoNfr/X4Cpbdl6JSQkOAXn0LR9REfzH3QlzLodDq/2E+ePIm2tjZceumlftsN1n648MILMX/+fEydOrVH2wfbcdCXMgTjsdDbMnQKpmOBAmfevHm44oorkJOT06PtRVHE1q1bMXfuXEydOhU5OTlYvnw5HA4HduzYEeBo+66qqgr79+/HLbfcgoKCAhQUFOB3v/sd9u3bh+rq6nM+V6VS+R0LsbGxgxR1zwXiuiNYBeL8HqwCcR4NZmz+9D1utxslJSW4+uqr/daPHz8ex48f7/Y5J06cwPjx4/3WXXDBBfjss8/gdruhUqlQVFSEn//8537bTJgwAVu3bpU9/u/zer1ob28/44vXbrdj2bJl8Hq9yM3NxfXXX4+8vLwBi71Tf8pw9913w+VyISsrC9dccw3Gjh3re2yw9gEwMPth27ZtGDduHJKTk/3WD9Z+6K1gOg4GitzHQn8Ey7FAwaW+vh4WiwUTJkzwrVOr1Rg9ejSOHz+OH//4xzJGd3ZFRUXQ6XQYPny4b11BQQF0Oh2OHz+OjIyMsz736NGjuPnmmxETE4NRo0bhhhtuQEJCwmCE3SOBuu4IRoE6v4eLUN2vnYI7Ohm0tLTA6/We8YWTkJAAi8XS7XMsFku323s8HlitVhgMBlgsljPuZur1+rO+5mDG/33vvfceHA4Hpk+f7luXkZGBZcuWIScnB+3t7di6dSseeOABPP7440hPT5e9DAaDAUuXLsXQoUPhdrvxxRdf4L//+7/x4IMPYvTo0QAwaPugr2U4ndlsxv79+3HHHXf4rR/M/dBbwXQcDBS5j4W+CLZjgYJL5z7u7lg1mUxyhNQj3X2/AOf/Tr3wwgsxffp0JCUlob6+Hps2bcLDDz+Mv/zlL1Cr1YEMuccCdd0RjAJ1fg8XobpfOzGpOAtBEHq07myPiR1zCp7rOaIonvPx/uht/J127NiB119/HX/4wx/8Ptid1c2dRowYgXvuuQcffPABFi9ePDBB9yDes5UhIyPD705VQUEBTCYT3n333XN+6QRyHwB93w/bt29HTEzMGR265NgPvRFsx0F/BNOx0BvBeixQz23evBlvvPHGObdZs2YN8vPz+/weZztWB1tPy3o25/vczpgxw/d3Tk4O8vPzsWzZMuzbt6/XTQoDbTCuO4LFYJzfQ1Uo71cmFd8THx8PhUJxRsbc3Nx81urS7u7wtbS0QKlU+ppNdLfNuV6zr/oSf6ddu3bh3//+N+66664zqt++T6FQID8/H7W1tf2O+fv6U4bTFRQUoLCw0Lc8WPsA6F8ZRFHEZ599hosvvvi8VZ2B3A+9FUzHQX8Fy7EwUOQ8Fqj3Lr/8csycOfOc23y/WWRPddZQWSwWv7ueLS0tsuz/npa1vLwczc3NZzzW27gNBgOSk5NRU1PT61gDJVDXHcEoUOf3cBGq+7VT8PdyGWQqlQpDhw7FwYMH/dYfPHgQI0aM6PY5w4cPP2P7AwcOYOjQob6LwoKCAhw6dOiM1zz9judA6Ev8gHRXdt26dbjjjjswceLE876PKIooLy8PSAfVvpbh+0pLS/3iG6x9APSvDEePHkVtbS1mz5593vcJ5H7orWA6DvojmI6FgSLnsUC9Fx8fj8zMzHP+9HX44pSUFOj1er9j1e124+jRo736fh0oPS1rQUEBbDYbiouLfc89ceIEbDZbr+K2Wq1obGwMqmYkgbruCEaBOr+Hi1Ddr52Uq1evXi13EMEmOjoar732GoxGI9RqNbZs2YIjR45g2bJliImJwSuvvILPP//c1zQlLS0Nb7/9NqxWK5KSkrB37168+eabWLhwIbKysgAARqMRr732GlQqFeLi4rBt2zZs27YNv/vd75CYmChr/J0XUTfddBMmTJgAu90Ou90Or9fra3P6+uuvw+VyQRAEmEwmvPrqqzh48CB++9vfwmg0Dmj8fSnD+++/D4vF4rsD8v777+PTTz+VbR/0pQydNm3aBK1Wi2uuueaM1xzM/WC321FVVQWLxYKPP/4Yw4YNg0ajgdvthk6nC/rjoC9lCMZjobdlCMZjgQLHZDKhvr4excXFOHbsGC688EJYLBZERUX5LkJWrFgBo9GIzMxMCIIAj8eDt99+GxkZGfB4PHjxxRdhNpuxdOnSoOln8H3x8fE4ceIEduzYgdzcXDQ2NuLZZ59Ffn4+fvrTn/q2O72sdrsdr7zyCqKjo+HxeFBWVoZ///vf8Hg8WLJkSVCVNRDXHcEqEOf3YBWI82gwC/60RwYzZsyA1WrFm2++CbPZjOzsbKxatcpX3Ww2m/06tKWkpGDVqlV44YUX8OGHH8JgMOA3v/kNpk2b5ttmxIgRWLFiBV577TVs2rQJaWlpWLFihd9IFnLF/8knn8Dj8WDDhg3YsGGDb/0Pf/hDLF++HADQ1taGZ599FhaLBTqdDnl5eXjooYcwbNiwAY+/L2Vwu9146aWX0NTUBI1Gg+zsbNx7771+d5oHcx/0pQwAYLPZsGfPHixatKjb1xzM/XDy5Em/CYdl0znhAAAIqklEQVRefPFFAF2fi2A/DvpShmA8FnpbhmA8FihwNm3a5De529133w0AePDBBzFmzBgAQHV1NWw2m2+bq666Ck6nE+vXr0dbWxuGDRuG+++/H9HR0YMbfC/dcccd2Lhxo2/iukmTJmHJkiV+25xeVoVCgcrKSnzxxRdoa2uDwWDAmDFjsGLFiqArayCuO4JVIM7vwSoQ59FgJohy9c4iIiIiIqKwwD4VRERERETUL0wqiIiIiIioX5hUEBERERFRvzCpICIiIiKifmFSQURERERE/cKkgoiIiIiI+oVJBRERERER9QuTCiIiIiIi6hcmFUREREQyOnLkCFasWNHr523fvh3z58/HggULYLVaBySWdevW4e233wYA7N69GwsWLMC8efNgsVgG5PUpfDGpIBogJpMJS5YsCeh71NfXY968eViwYAG++uqrc27LkwERUWDcfvvtuO++++QOAwAwbtw4vPTSS4iLixvw1542bRpeeumlAX9dCk8quQMgCiULFizw/e1wOKDVan3LTz75JDZs2BDwGNRqdY++5KdNm4Zp06Zh3rx5AY+JiChSHD9+HC0tLTCZTKitrUVaWprcIZ2V2+2GSsVLPRoc/KQR9cLpF/M33ngjnnjiCaSkpMgYERERDabCwkJMmTIFFosFhYWFuO666wBINcl33nknfvOb32Dz5s0QRRELFizAJZdcAgCwWCxYu3YtTpw4gaFDhyIzMxNerxdLly494z0qKiqwYcMGVFRUICUlBUuXLkV+fn6P4lu9ejVGjRqFffv2oaqqCi+//DLeeOMNbNu2DW1tbcjKysLSpUsxZMgQAEBtbS3Wrl2LiooKjB8/HgoFG7FQ3/CTQzRA6uvrceONN/qW582bh48++gi33norlixZgl27duGbb77Bbbfdhptvvhm7du3ybdva2op//OMfuPnmm3Hbbbdh+/btPX7foqIi3H333Vi4cCF++9vf4r333hvIYhERUQe3240vv/wSM2bMwPTp07Fjx44zHq+ursYzzzyD2267DRs2bIDD4QAArF+/HomJifjf//1f3HDDDWc8t1N7ezseffRR/PznP8eGDRtw7bXX4m9/+xucTmeP49y1axfuuusuPPfccwCArKws/OUvf8HGjRsxfvx4rF271rftP//5T4wdOxYbN27EJZdcgq+//rq3/xYiAEwqiALq2LFjvmRh/fr12LNnD5544gnccsst2LBhA7xeLwDg6aefRmJiIv71r39h1apVePXVV1FWVtaj93jhhRdw5ZVX4sUXX8STTz6JMWPGBLBERESR68CBAxBFEePGjcOUKVNQX1+P4uJi3+OiKOKXv/wlVCoVJkyYALVajbq6Ong8HuzduxfXX389NBoNCgoKMGnSpG7fY9++fRgyZAimTJkChUKBKVOmICEhAUVFRT2Oc86cOUhNTYVGowEgNYeNj4+HUqnE3LlzUVFRAbvdjoaGBlRWVvpinjJlCoYNG9a/fxJFLDZ/Igqgq666ChqNBlOnTsVTTz2Fyy67DFqtFpMnT4bdbkdTUxNUKhWOHTuGe+65BwqFApmZmZg5cya++uor5Obmnvc9lEolqqur0draitjYWMTGxga+YEREEaiz6ZNKpUJsbCwmTJiAHTt2+C7E1Wo1dDqdb3utVgu73Q6r1QpRFGEwGHyPJSYmorW19Yz3MJlMOHToEBYtWuRb5/F4ejXghtFo9Fv+5JNPsHXrVjQ2NkIQBIiiCKvVCrPZjPj4eL9+F4mJiT1+H6LTMakgCqCEhAQAgEKhgEqlQnx8vO8xtVoNh8MBi8UCu92OxYsX+x7zer246KKLevQet9xyC1577TXcfvvtyMzMxMKFC1FQUDCwBSEiinDt7e3Yu3cvlEolvvnmGwCA3W7HyZMnsXDhwnM+Ny4uDoIgwGw2+y74Gxsb/Qb76GQ0GjFx4kSsXLmyz7EKguD7u76+Hi+++CJWr16NvLw8uFwuLFiwwJfktLS0+HXobmxs7NENLaLvY1JBJDOj0YiYmBhs3LixT8/PyMjAXXfdBY/Hg48//hhPP/00nn766QGOkogosu3ZswdxcXF49NFHfRftbrcbK1euxKFDh5Cenn7W5yqVSkyePBmbN2/GkiVLUF5ejm+++QYzZsw4Y9tJkybhlVdewd69ezFx4kS43W4cPXoUBQUFfrUgPWW32yEIAuLi4uDxeLB582bfY8nJycjKysKWLVtwzTXXYP/+/SguLj5r0yyic2GfCiKZGY1G5OfnY9OmTXA4HPB4PCgpKUFVVVWPnl9YWAir1QqlUomoqCiO3EFEFAA7duzA7NmzYTAYoNfrodfrkZSUhEsuuQSFhYXnff7NN9/sm8/o5ZdfxvTp06FWq8/YTqfT4d5778XWrVuxZMkSLF++HJ988kmf487JycGcOXOwcuVKLF++HCkpKX7Nne644w4cOHAAixcvxvbt2zFlypQ+vxdFNtZUEAWBO+64Ay+88AJuu+02uN1u5OTk4KabburRc7/99ls8//zzcLlcSE9Px6233hrgaImIIs8f//jHbtef3nT15Zdf9nts3bp1vr/1er3fazz11FO+2o0xY8bgqaee8j02ZMgQ/OlPfzpvTAqFAseOHcOiRYuwdu1axMbGYvXq1Wdst3DhQr8mWpdddpnv7/T0dDzyyCPdvv6ePXvwr3/9q9vkh+j7BFEURbmDIKKeaWhowIoVK6BWq3Hbbbdh8uTJZ92282Tgcrmwbt066PX6QYyUiIhOV1FRAUAa3vXw4cN4/PHH8dhjjyEjI0PmyIgGBpMKIiIiogA7duwY1q1bB4vFAqPRiGuvvdY3MR5ROGBSQURERERE/cIenURERERE1C9MKoiIiIiIqF+YVBARERERUb8wqSAiIiIion5hUkFERERERP3CpIKIiIiIiPqFSQUREREREfULkwoiIiIiIuoXJhVERERERNQv/x+r6uwv6In5eAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 800x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# static pandas plots\n",
    "# \n",
    "# print(plt.style.available)\n",
    "# NOTE: 2 lines below required in Jupyter to switch styles correctly\n",
    "plt.rcParams.update(plt.rcParamsDefault)\n",
    "%matplotlib inline\n",
    "plt.style.use(\"ggplot\")  # set plot style\n",
    "\n",
    "fig, (ax1a, ax2b) = plt.subplots(1,2, figsize=(8,4), dpi=100)   # 1 row, 2 subplots\n",
    "# fig.subplots_adjust(wspace=0.1)      # space subplots in row\n",
    "fig.set_tight_layout(True)\n",
    "fontsize = \"small\"\n",
    "\n",
    "df.plot(ax=ax1a).legend(fontsize=fontsize)\n",
    "ax1a.set_title(\"Outputs vs Time\", fontsize=\"medium\")\n",
    "ax1a.set_xlabel('Time [s]', fontsize=fontsize)\n",
    "ax1a.set_ylabel('Amplitudes', fontsize=fontsize);\n",
    "\n",
    "df.plot(ax=ax2b, x=\"angle\", y=[\"ang_vel\", \"ang_acc\"]).legend(fontsize=fontsize)\n",
    "ax2b.set_title(\"Outputs vs Angle | Phase-Space\", fontsize=\"medium\")\n",
    "ax2b.set_xlabel('Angle [rad]', fontsize=fontsize)\n",
    "ax2b.set_ylabel('Angular Velocity / Acc', fontsize=fontsize);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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tVpyc3OBUp9SS2kShRDMnz+fhIQEHnzwQdLS0rh69SpQ+sMv27xb5kObk5NDfn6+ecg3fPjwGtv54YcfkpCQQJ8+fUhNTTV7dajV6nI9uusZOnSoOXXmN998w7Bhwzhz5gwnT57koYceol+/fixbtozLly+Xu64qH+EzZ84QFhZm3njt5+dX7bB/9OjR5ogsa9eu5cEHH6xx2yXXcKGens1mnD59moiICMLDw4HSXfnJyclERkaay/j7++Pv78+BAwdsvd0thaV942V+rFXloP3qq6/IzMzk+++/x83NjdjYWPPwr2Le2LI8o1Wh0WiqzAlbRlJSErt372bjxo00adKEu+++u9z9quo5Dhs2jKeffpqBAweiKArNmzfnxIkT1eYRrsrem/Hx7datGykpKfz888+YTCbatm1bo+sl1+FCq7c2i15WVhbBwcHm18HBwZw6deqm60tMTCQxMRGA+fPnExISYquJTodGo6myXWq1mqCgIEJCQrj77rvZsmULM2fOZOfOnYSFhXH77bfj7e2Nt7e3xTpMJhORkZE0bNiQH3/8kYsXLxIYGGiuu+wab29vhBC0bNkSf39/zpw5Q2xsLNu2bTOX69ChA59//jlBQUFcunSJw4cP4+/vT0hIiNlOgNDQUJo0acLp06c5cOCAuYyiKFW2MyQkBA8PD1asWMFDDz1ESEgIsbGxZGdnc/r0afN826lTp4iKisLT05MGDRrQo0cPUlNTyc7OpmXLlnz77bfEx8fTo0cPrl69yrlz54iJiSEvLw8vLy/8/f1xd3cnJCSEsLAw8vLyytk0duxYnn32WWbMmHHD79qNnpkEp+nFWYPNpt6oN3IzlAWRLKM+bna90SZeo9FonhObMGECU6dOJTo6Gk9PTxYuXEhGRgaFhYUoimKxjnvvvZexY8fSrVs32rdvT8uWLdFqtea6y64pLCyksLCQjIwM3nzzTZ5++mm8vLzo1asX3t7eZGRk0Lp1axo2bEinTp1o06YNHTp0ICcnh4yMDLOdXbt25d133yU6Opp27drRpUsXcxkhxA2f36BBg5g7dy579+41l3vvvfd46aWXyuURDgsLo7i4mNzcXPLz81mwYAGjRo0y+wiPGDGC3Nxcli9fzsSJEykuLsbT05O1a9eSk5ODXq8nIyODXr168fTTT/P111/z+uuvExsby7333ss///lP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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# sample scatter plot with colorbar\n",
    "fig, ax = plt.subplots()\n",
    "sc = ax.scatter(df2[\"dx (m)\"], df2[\"dy (m)\"], s=df2[\"size\"]*.1, c=df2[\"ang_vel\"], cmap=\"jet\")\n",
    "cbar = fig.colorbar(sc)\n",
    "cbar.set_label(label=\"ang_vel [rad/s]\", fontsize=\"small\")\n",
    "# sc.set_clim(350, 400)\n",
    "ax.tick_params(labelrotation=0, labelsize=\"medium\")\n",
    "ax_scale = 1.\n",
    "ax.set_xlim(-L*ax_scale, L*ax_scale)\n",
    "ax.set_ylim(-L*ax_scale-0.1, L*ax_scale-0.1)\n",
    "# make axes square: a circle shows as a circle\n",
    "ax.set_aspect(1/ax.get_data_ratio())\n",
    "ax.arrow(0, 0, df2[\"dx (m)\"].iloc[-1], df2[\"dy (m)\"].iloc[-1],\n",
    "    color=\"dimgray\", ls=\":\", lw=2.5, width=.0, head_width=0, zorder=-1\n",
    ")\n",
    "ax.text(0, 0.15 , s=\"size and colour of pendulum bob\\nbased on pd column\\nfor angular velocity\",\n",
    "       ha='center', va='center');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### `pandas_alive` Animations"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### LineChart Animation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating LineChart, plotting ['angle', 'ang_vel', 'ang_acc']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=150.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<video src=\"./pend-line.mp4\" controls muted autoplay  >\n",
       "      Your browser does not support the <code>video</code> element.\n",
       "    </video>"
      ],
      "text/plain": [
       "<IPython.core.display.Video object>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# set up and generate animated line plot\n",
    "# \n",
    "dpi = 100\n",
    "ax_scale = 1.1\n",
    "figsize = (3,3)\n",
    "fontsize = \"small\"\n",
    "\n",
    "# set up figure to pass onto `pandas_alive`\n",
    "# NOTE: by using Figure (capital F) instead of figure() `FuncAnimation` seems to run twice as fast!\n",
    "# fig1, ax1 = plt.subplots()\n",
    "fig1 = plt.Figure()\n",
    "ax1 = fig1.add_subplot()\n",
    "fig1.set_size_inches(figsize)\n",
    "ax1.set_title(\"Simple pendulum animation, L=\"+str(L)+\"m\", fontsize=\"medium\")\n",
    "ax1.set_xlabel(\"Time (s)\", color='dimgray', fontsize=fontsize)\n",
    "ax1.set_ylabel(\"Amplitudes\", color='dimgray', fontsize=fontsize)\n",
    "ax1.tick_params(labelsize=fontsize)\n",
    "\n",
    "\n",
    "# pandas_alive\n",
    "line_chart = df.plot_animated(filename=\"pend-line.mp4\", kind='line', period_label={'x':0.05,'y':0.9},\n",
    "                 steps_per_period=1, interpolate_period=False, period_length=50, period_fmt='Time:{x:10.2f}',\n",
    "                 enable_progress_bar=True, fixed_max=True, dpi=100, fig=fig1\n",
    "                )\n",
    "plt.close()\n",
    "\n",
    "Video('./pend-line.mp4', html_attributes=\"controls muted autoplay\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### ScatterChart Animation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating ScatterChart, plotting ['angle', 'ang_vel', 'ang_acc']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=150.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Points size follows one of the pd columns: ang_vel\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<video src=\"./pend-scatter.mp4\" controls muted autoplay  >\n",
       "      Your browser does not support the <code>video</code> element.\n",
       "    </video>"
      ],
      "text/plain": [
       "<IPython.core.display.Video object>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# set up and generate animated scatter plot\n",
    "# \n",
    "\n",
    "# set up figure to pass onto `pandas_alive`\n",
    "# NOTE: by using Figure (capital F) instead of figure() `FuncAnimation` seems to run twice as fast!\n",
    "fig1sc = plt.Figure()\n",
    "ax1sc = fig1sc.add_subplot()\n",
    "fig1sc.set_size_inches(figsize)\n",
    "ax1sc.set_title(\"Simple pendulum animation, L=\"+str(L)+\"m\", fontsize=\"medium\")\n",
    "ax1sc.set_xlabel(\"Time (s)\", color='dimgray', fontsize=fontsize)\n",
    "ax1sc.set_ylabel(\"Amplitudes\", color='dimgray', fontsize=fontsize)\n",
    "ax1sc.tick_params(labelsize=fontsize)\n",
    "\n",
    "\n",
    "# pandas_alive\n",
    "scatter_chart = df.plot_animated(filename=\"pend-scatter.mp4\", kind='scatter', period_label={'x':0.05,'y':0.9},\n",
    "                 steps_per_period=1, interpolate_period=False, period_length=50, period_fmt='Time:{x:10.2f}',\n",
    "                 enable_progress_bar=True, fixed_max=True, dpi=100, fig=fig1sc, size=\"ang_vel\"\n",
    "                )\n",
    "plt.close()\n",
    "\n",
    "print(\"Points size follows one of the pd columns: ang_vel\")\n",
    "Video('./pend-scatter.mp4', html_attributes=\"controls muted autoplay\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### BarChartRace Animation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating BarChartRace, plotting ['angle', 'ang_vel', 'ang_acc']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=150.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<video src=\"./pend-race.mp4\" controls muted autoplay  >\n",
       "      Your browser does not support the <code>video</code> element.\n",
       "    </video>"
      ],
      "text/plain": [
       "<IPython.core.display.Video object>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# set up and generate animated bar race chart\n",
    "# \n",
    "# set up figure to pass onto `pandas_alive`\n",
    "# NOTE: by using Figure (capital F) instead of figure() `FuncAnimation` seems to run twice as fast!\n",
    "fig2 = plt.Figure()\n",
    "ax2 = fig2.add_subplot()\n",
    "fig2.set_size_inches(figsize)\n",
    "ax2.set_title(\"Simple pendulum animation, L=\"+str(L)+\"m\", fontsize=\"medium\")\n",
    "ax2.set_xlabel(\"Amplitudes\", color='dimgray', fontsize=fontsize)\n",
    "ax2.set_ylabel(\"\", color='dimgray', fontsize=\"x-small\")\n",
    "ax2.tick_params(labelsize=fontsize)\n",
    "\n",
    "\n",
    "# pandas_alive\n",
    "race_chart = df.plot_animated(filename=\"pend-race.mp4\", kind='race', period_label={'x':0.05,'y':0.9},\n",
    "                 steps_per_period=1, interpolate_period=False, period_length=50, period_fmt='Time:{x:10.2f}',\n",
    "                 enable_progress_bar=True, fixed_max=False, dpi=100, fig=fig2\n",
    "                )\n",
    "plt.close()\n",
    "\n",
    "Video('./pend-race.mp4', html_attributes=\"controls muted autoplay\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### BubbleChart Animation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generating BubbleChart, plotting ['dx (m)', 'dy (m)', 'ang_vel', 'size']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=150.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Bubble size & colour animates with pd data column for ang_vel.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<video src=\"./pend-bubble.mp4\" controls muted autoplay  >\n",
       "      Your browser does not support the <code>video</code> element.\n",
       "    </video>"
      ],
      "text/plain": [
       "<IPython.core.display.Video object>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# set up and generate bubble animated plot\n",
    "# \n",
    "\n",
    "# set up figure to pass onto `pandas_alive`\n",
    "# NOTE: by using Figure (capital F) instead of figure() `FuncAnimation` seems to run twice as fast!\n",
    "fig3 = plt.Figure()\n",
    "ax3 = fig3.add_subplot()\n",
    "fig3.set_size_inches(figsize)\n",
    "ax3.set_title(\"Simple pendulum animation, L=\"+str(L)+\"m\", fontsize=\"medium\")\n",
    "ax3.set_xlabel(\"Hor Displacement (m)\", color='dimgray', fontsize=fontsize)\n",
    "ax3.set_ylabel(\"Ver Displacement (m)\", color='dimgray', fontsize=fontsize)\n",
    "# limits & ratio below get the graph square\n",
    "ax3.set_xlim(-L*ax_scale, L*ax_scale)\n",
    "ax3.set_ylim(-L*ax_scale-0.1, L*ax_scale-0.1)\n",
    "ratio = 1.  # this is visual ratio of axes\n",
    "ax3.set_aspect(ratio/ax3.get_data_ratio())\n",
    "\n",
    "ax3.arrow(0, 0, df2[\"dx (m)\"].iloc[-1], df2[\"dy (m)\"].iloc[-1],\n",
    "    color=\"dimgray\", ls=\":\", lw=1, width=.0, head_width=0, zorder=-1)\n",
    "\n",
    "\n",
    "# pandas_alive\n",
    "bubble_chart = df2.plot_animated(\n",
    "    kind=\"bubble\", filename=\"pend-bubble.gif\",\n",
    "    x_data_label=\"dx (m)\", y_data_label=\"dy (m)\", \n",
    "    size_data_label=\"size\", color_data_label=\"ang_vel\", cmap=\"jet\",\n",
    "    period_label={'x':0.05,'y':0.9}, vmin=None, vmax=None,\n",
    "    steps_per_period=1, interpolate_period=False, period_length=50, period_fmt='Time:{x:10.2f}s',\n",
    "    enable_progress_bar=True, fixed_max=False, dpi=dpi, fig=fig3\n",
    ")\n",
    "plt.close()\n",
    "\n",
    "print(\"Bubble size & colour animates with pd data column for ang_vel.\")\n",
    "Video('./pend-bubble.mp4', html_attributes=\"controls muted autoplay\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Multiple Plots Animations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=150.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<video src=\"./pend-combined.mp4\" controls muted autoplay  >\n",
       "      Your browser does not support the <code>video</code> element.\n",
       "    </video>"
      ],
      "text/plain": [
       "<IPython.core.display.Video object>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Combined plots\n",
    "# \n",
    "fontsize=\"x-small\"\n",
    "# Otherwise titles overlap and subplots_adjust does nothing\n",
    "from matplotlib import rcParams\n",
    "rcParams.update({\"figure.autolayout\": False})\n",
    "\n",
    "figs = plt.Figure(figsize=(9, 4), dpi=100)\n",
    "figs.subplots_adjust(wspace=0.1)\n",
    "gs = figs.add_gridspec(2, 2)\n",
    "\n",
    "ax1 = figs.add_subplot(gs[0, 0])\n",
    "ax1.set_xlabel(\"Time(s)\", color='dimgray', fontsize=fontsize)\n",
    "ax1.set_ylabel(\"Amplitudes\", color='dimgray', fontsize=fontsize)\n",
    "ax1.tick_params(labelsize=fontsize)\n",
    "\n",
    "ax2 = figs.add_subplot(gs[1, 0])\n",
    "ax2.set_xlabel(\"Amplitudes\", color='dimgray', fontsize=fontsize)\n",
    "ax2.set_ylabel(\"\", color='dimgray', fontsize=fontsize)\n",
    "ax2.tick_params(labelsize=fontsize)\n",
    "\n",
    "ax3 = figs.add_subplot(gs[:, 1])\n",
    "ax3.set_xlabel(\"Hor Displacement (m)\", color='dimgray', fontsize=fontsize)\n",
    "ax3.set_ylabel(\"Ver Displacement (m)\", color='dimgray', fontsize=fontsize)\n",
    "ax3.tick_params(labelsize=fontsize)\n",
    "# limits & ratio below get the graph square\n",
    "ax3.set_xlim(-L*ax_scale, L*ax_scale)\n",
    "ax3.set_ylim(-L*ax_scale-0.1, L*ax_scale-0.1)\n",
    "ratio = 1.  # this is visual ratio of axes\n",
    "ax3.set_aspect(ratio/ax3.get_data_ratio())\n",
    "\n",
    "line_chart.ax = ax1\n",
    "race_chart.ax = ax2\n",
    "bubble_chart.ax = ax3\n",
    "\n",
    "\n",
    "plots = [line_chart, race_chart, bubble_chart]\n",
    "# pandas_alive combined using custom figure\n",
    "pandas_alive.animate_multiple_plots(\n",
    "    filename='./pend-combined.mp4', plots=plots, custom_fig=figs, dpi=100, enable_progress_bar=True,\n",
    "    adjust_subplot_left=0.2, adjust_subplot_right=None,\n",
    "    title=\"Simple pendulum animations, L=\"+str(L)+\"m\", title_fontsize=\"medium\"\n",
    ")\n",
    "plt.close()\n",
    "\n",
    "Video('./pend-combined.mp4', html_attributes=\"controls muted autoplay\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=150.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<video src=\"./pend-combined-2.mp4\" controls muted autoplay  >\n",
       "      Your browser does not support the <code>video</code> element.\n",
       "    </video>"
      ],
      "text/plain": [
       "<IPython.core.display.Video object>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# This is here for testing that re-using axes with multiple plots behaves itself\n",
    "# \n",
    "scatter_chart.ax = ax1sc\n",
    "race_chart.ax = ax2\n",
    "bubble_chart.ax = ax3\n",
    "\n",
    "figs2 = figs\n",
    "plots = [scatter_chart, race_chart, bubble_chart]\n",
    "# pandas_alive combined using custom figure\n",
    "pandas_alive.animate_multiple_plots(\n",
    "    filename='./pend-combined-2.gif', plots=plots, custom_fig=figs2, dpi=100, enable_progress_bar=True,\n",
    "    adjust_subplot_left=0.2, adjust_subplot_right=None,\n",
    "    title=\"Simple pendulum animations, L=\"+str(L)+\"m\", title_fontsize=\"medium\"\n",
    ")\n",
    "plt.close()\n",
    "\n",
    "Video('./pend-combined-2.mp4', html_attributes=\"controls muted autoplay\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'FPS: 20.0 | Time: 0.05s'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# checks on expected video FPS and Period\n",
    "period_length = 50\n",
    "steps_per_period = 1\n",
    "fps = 1000 / period_length * steps_per_period\n",
    "display(\"FPS: \"+str(fps)+\" | Time: \"+str(1/fps)+\"s\")"
   ]
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
